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
*
*****************************************************************/
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.