2012-11-29 22 views
5

Stavo cercando di analizzare stringhe usando strtok(); Sto cercando di analizzare stringhe delimitate da un punto e virgola (;). Ma quando inserisco una stringa senza punto e virgola a strtok(), restituisce l'intera stringa. Non dovrebbe restituire NULL se non ci sono match token?Strtok(), nessuna corrispondenza token

Questo è il mio codice:

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); 
} 

L'output è: Abbiamo qualcosa !! INSERT A-> B B-> C INSERT C-> D

+6

'non dovrebbe restituire NULL se non ci sono match token?' N o. L'intera stringa è una corrispondenza token. –

+0

Se stai cercando ';' piuttosto che token, prova a 'strchr'. – ams

risposta

9

No, il delimitatore significa che è la cosa che separa i token, quindi se non ci sono delimitatori, allora l'intera stringa viene considerato il primo token

considera se hai due token, quindi prendi uno di quei token. se avete

a;b

allora hai gettoni a e b

ora se si prende b via ...

a

avete ancora gettone a

Problemi correlati