Wie zerlegt strtok() in C einen String in Tokens?
Bitte erklären Sie, wie die Methode strtok() funktioniert. Laut Dokumentation teilt es die Zeichenfolge in Tokens auf. Ich kann anhand des Handbuchs nicht herausfinden, was es bewirkt.
Code:
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
Als die erste While-Schleife begann, war der Inhalt von str einfach »this«. Ich habe Watches auf str und *pch hinzugefügt, um ihre Funktionalität zu testen. Wie erschien die folgende Ausgabe auf dem Bildschirm?
Code:
Splitting string "- This, a sample string." into tokens:
This
a
sample
string
Laut dem Artikel von scaler topics ändert strtok() seinen gelieferten String, indem es Token mit NUL beendet, bevor es zurückkehrt. Wenn ich versuche, den gesamten Puffer (str[]) zu inspizieren, wird er zwischen strtok-Aufrufen () aktualisiert. Ist das richtig? Könnte mir bitte jemand helfen?