2017-02-25 2 views
0

sagen, dass ich eine Zeichenfolge habe str des FormatsDas letzte Token einer Zeichenkette mit strtok() speichern?

"token1, token2, token3" 

und ich mag genannt jedes Token in seinen eigenen char-Array speichern, wie so

char* tok1 = strtok(str, ", "); 
char* tok2 = strtok(str, ", "); 
char* tok3 = strtok(str, "\0"); //this line is incorrect 

Aber ich erhalte eine Fehlermeldung auf dem dritte Token da strtok() erwartet eine Eingabe ungleich null. Da strtok() zwei Parameter benötigt (eine Zeichenfolge und ein Trennzeichen), wie würde ich dieses letzte Token abrufen?

+1

Es gibt keinen effektiven Unterschied zwischen '" \ 0 "' und '" ". Sie können '\ 0' nicht als reales Zeichen in einer Zeichenfolge angeben, da dies der Nullabschluss ist. – Barmar

+0

Dann was soll ich als Trennzeichen für dieses letzte Token setzen? Es gibt keinen anderen Wert neben dem Null-Terminator. Wäre es nur ""? – EgerStu

+1

Verwenden Sie einfach '' '', da Sie nicht nach einem Trennzeichen suchen müssen. – Barmar

Antwort

4

Wenn Sie die gleiche Zeichenfolge parsen, muss der Wert des ersten Parameters NULL für alle folgenden Anrufe werden:

char* tok1 = strtok(str, ", "); 
char* tok2 = strtok(NULL, ", "); 
char* tok3 = strtok(NULL, ""); 

Beim ersten Aufruf von strtok() die Zeichenfolge analysiert werden sollte angegeben in str. In jedem nachfolgenden Aufruf, der dieselbe Zeichenfolge analysieren soll, sollte str NULL sein.

Verwandte Themen