La funzione dello strtok
La funzione dello strtok è usata per trovare il segno seguente in una stringa. Il segno è specificato da una lista dei delimiters possibili.
Il seguente esempio legge una linea di testo da una lima e determina una parola usando i delimiters, lo spazio, la linguetta e la nuova linea. Ogni parola allora è visualizzata su una linea separata:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *in;
char line[80];
char *delimiters = " \t\n";
char *token;
if ((in = fopen("C:\\text.txt", "r")) == NULL)
{
puts("Unable to open the input file");
return 0;
}
/* Read each line one at a time */
while(!feof(in))
{
/* Get one line */
fgets(line, 80, in);
if (!feof(in))
{
/* Break the line up into words */
token = strtok(line, delimiters);
while (token != NULL)
{
puts(token);
/* Get the next word */
token = strtok(NULL, delimiters);
}
}
}
fclose(in);
return 0;
}
Sopra il programma, in = fopen ("C:\ \ text.txt", "r"), si apre e lima attuale C:\ \ text.txt. Se non esiste nel percorso specificato o per alcun motivo, la lima non potrebbe essere aperta, un messaggio di errore è visualizzata sullo schermo.
Considerare il seguente esempio, che usa alcune di queste funzioni:
#include <stdio.h>
#include <string.h>
void main()
{
char line[100], *sub_text;
/* initialize string */
strcpy(line,"hello, I am a string;");
printf("Line: %s\n", line);
/* add to end of string */
strcat(line," what are you?");
printf("Line: %s\n", line);
/* find length of string */
/* strlen brings back */
/* length as type size_t */
printf("Length of line: %d\n", (int)strlen(line));
/* find occurence of substrings */
if ( (sub_text = strchr ( line, 'W' ) )!= NULL )
printf("String starting with \"W\" ->%s\n",
sub_text);
if ( ( sub_text = strchr ( line, 'w' ) )!= NULL )
printf("String starting with \"w\" ->%s\n",
sub_text);
if ( ( sub_text = strchr ( sub_text, 'u' ) )!= NULL )
printf("String starting with \"w\" ->%s\n",
sub_text);
}
L'uscita del programma sarà visualizzata come segue:
Line: hello, I am a string;
Line: hello, I am a string; what are you?
Length of line: 35
String starting with "w" ->what are you?
String starting with "w" ->u? |
|