De strtokfunctie
De strtokfunctie wordt gebruikt om het volgende teken in een koord te vinden. Het teken wordt gespecificeerd door een lijst van mogelijke afbakeningen.
Het volgende voorbeeld leest een lijn van tekst van een dossier en bepaalt een woord gebruikend de afbakeningen, de ruimte, het lusje, en de nieuwe lijn. Elk woord wordt dan getoond op een afzonderlijke lijn:
#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;
}
/* Lees elke lijn tegelijkertijd */
while(!feof(in))
{
/* Krijg één lijn */
fgets(line, 80, in);
if (!feof(in))
{
/* Breek de opstelling in woorden */
token = strtok(line, delimiters);
while (token != NULL)
{
puts(token);
/* Krijg het volgende woord */
token = strtok(NULL, delimiters);
}
}
}
fclose(in);
return 0;
}
Het boven programma, in = fopen("C:\\text.txt", "r"), opent en bestaand dossier C:\\text.txt. Als niet in de gespecificeerde weg of om enige reden bestaat, kon het dossier niet worden geopend, wordt een foutenmelding getoond op het scherm.
Bespreek het volgende voorbeeld, dat sommige van deze functies gebruikt:
#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);
}
De output van het programma zal als volgt worden getoond:
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? |
|