2012-11-29 23 views
5

Ich habe versucht, Strings mit strtok() zu analysieren; Ich versuche, Zeichenfolgen zu analysieren, die durch ein Semikolon (;) getrennt sind. Aber wenn ich einen String ohne Semikolon in strtok() eintrage, gibt es den gesamten String zurück. Sollte es nicht NULL zurückgeben, wenn es keine Token-Übereinstimmungen gibt?Strtok(), keine Token-Übereinstimmung

Dies ist mein Code:

int main(int argc, char** argv) 
{ 
    char cmd[] = "INSERT A->B B->C INSERT C->D"; 
    char delim[] = ";"; 
    char *result = NULL; 

    result = strtok(cmd,delim); 

    if(result == NULL) 
    { 
     printf("\n NO TOKENS\n"); 
    } 
    else 
    { 

     printf("\nWe got something !! %s ",result); 

    } 

    return (EXIT_SUCCESS); 
} 

Die Ausgabe lautet: Wir haben etwas bekommen !! INSERT A-> B B-> C INSERT C-> D

+6

'sollte es nicht NULL zurückgeben, wenn es keine Token-Übereinstimmungen gibt?' N o. Die gesamte Zeichenfolge ist eine Token-Übereinstimmung. –

+0

Wenn Sie nach ';' anstelle von Tokens versuchen Sie 'strchr'. – ams

Antwort

9

Nein, bedeutet das Trennzeichen, dass es die Sache, die Token trennt, so dass, wenn es keine Trennzeichen ist, dann wird der gesamte String das erste Token

betrachtet

Überlegen Sie, ob Sie zwei Token haben und nehmen Sie einen dieser Token weg. wenn Sie

a;b

dann Tokens Sie haben a und b

jetzt, wenn Sie b weg nehmen ...

a

Sie noch Token haben a

Verwandte Themen