Search code examples
cstringstrtok

strtok and it's usage


I'm working on an assignment that requires string and file manipulation. I'm currently working on the string manipulation part and I'm trying to use strtok to separate lines in a file, split by a comma. However, I'm not sure how strtok works. I'm looking at the code below and don't quite understand why there is a NULL in the second strtok call, when NULL isn't even a string.

The code I'm running:

/***************************************************************** * * Purpose: Program to demonstrate the 'strtok' function. * Author: M J Leslie * Date: 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
 *
 *****************************************************************/

Solution

  • From the documentation:

    Each subsequent call, with a null pointer as the value of the first argument, starts searching from the saved pointer and behaves as described above.