2017-12-06 19 views
-1

Ich arbeite an einer Zuweisung, die Zeichenfolge und Dateimanipulation erfordert. Ich arbeite gerade an dem String-Manipulationsteil und versuche, strtok zu verwenden, um Zeilen in einer Datei zu trennen, die durch ein Komma getrennt sind. Ich bin mir jedoch nicht sicher, wie strtok funktioniert. Ich schaue auf den Code unten und verstehe nicht ganz, warum es einen NULL im zweiten strtok Aufruf gibt, wenn NULL nicht einmal eine Zeichenkette ist.strtok und seine Verwendung

Der Code Ich bin mit:

/********************************** ******************************** * * Zweck: Programm zum Demonstrieren der 'strtok' Funktion. * Autor: MJ Leslie * Datum: 23-Apr-94 * ******************************** ********************************/

#include <stdio.h> 
#include <string.h> 

main() 
{ 
      /* Copy the constant into the memory 
      * pinted to by 'test_string'  */ 
    char test_string[50]="string to split up"; 

    /* if 'test_string' is declared as below and the program will give a 
    * 'Segmentation fault' This is because test_string' is pointing 
    * to a constant i.e. somethin that cant be changed.  

    char *test_string="string to split up";   */ 

    char *sub_string; 

       /* Extract first string */ 
    printf("%s\n", strtok(test_string, " ")); 

       /* Extract remaining 
       * strings  */ 
    while ((sub_string=strtok(NULL, " ")) != NULL) 
    { 
     printf("%s\n", sub_string); 
    } 
} 
/***************************************************************** 
* 
* Program O/P will look like this... 
* 
* string 
* to 
* split 
* up 
* 
*****************************************************************/ 
+0

Was ist das Problem? Lesen Sie einfach die Beschreibung der Funktion. –

+2

'strtok' mit' NULL' soll von dem Punkt weitergehen, an dem es das letzte Mal war, als du es – Isac

+1

genannt hast. Um ehrlich zu sein, 'strtok()' ist eine Abscheulichkeit und unglaublich dumm. – EOF

Antwort

0

Vom documentation:

Jeder nachfolgende Aufruf mit einem Nullzeiger als Wert des ersten Arguments beginnt mit der Suche aus dem gespeicherten Zeiger und verhält sich wie oben beschrieben.