Η λειτουργία strtok
Η λειτουργία strtok χρησιμοποιείται για να βρεί το επόμενο σημείο σε μια σειρά. Το σημείο διευκρινίζεται από έναν κατάλογο πιθανών οριοθετών.
Το ακόλουθο παράδειγμα διαβάζει μια γραμμή κειμένου από ένα αρχείο και καθορίζει μια λέξη χρησιμοποιώντας τους οριοθέτες, το διάστημα, την ετικέττα, και τη νέα γραμμή. Κάθε λέξη επιδεικνύεται έπειτα σε μια χωριστή γραμμή:
#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;
}
/* Διαβάστε σε κάθε γραμμή μιας σε έναν χρόνο */
while(!feof(in))
{
/* Πάρτε μια γραμμή */
fgets(line, 80, in);
if (!feof(in))
{
/* Σπάστε τη διάταξη στις λέξεις */
token = strtok(line, delimiters);
while (token != NULL)
{
puts(token);
/* Πάρτε την επόμενη λέξη */
token = strtok(NULL, delimiters);
}
}
}
fclose(in);
return 0;
}
Επάνω από το πρόγραμμα, = fopen("C:\\text.txt", "ρ"), ανοίγει και υπάρχον αρχείο C:\\text.txt. Εάν δεν υπάρχει στη διευκρινισμένη πορεία ή για οποιοδήποτε λόγο, το αρχείο δεν θα μπορούσε να ανοίξουν, ένα μήνυμα λάθους επιδεικνύεται στην οθόνη.
Εξετάστε το ακόλουθο παράδειγμα, το οποίο χρησιμοποιεί μερικών από αυτές τις λειτουργίες:
#include <stdio.h>
#include <string.h>
void main()
{
char line[100], *sub_text;
/* μονογράψτε τη σειρά */
strcpy(line,"hello, I am a string;");
printf("Line: %s\n", line);
/* προσθέστε στο τέλος της σειράς */
strcat(line," what are you?");
printf("Line: %s\n", line);
/* βρείτε το μήκος της σειράς */
/* strlen brings back */
/* length as type size_t */
printf("Length of line: %d\n", (int)strlen(line));
/* βρείτε την εμφάνιση των 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);
}
Η παραγωγή του προγράμματος θα επιδειχθεί ως εξής:
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? |
|