strtok()问题获取字符串的第一个标记

shi*_*n32 1 c strtok

以下代码无法获取字符串的第一个标记:

char *p1;
char array[100];
strcpy(array, "ANY STRING WOULD DO");
p1 = strtok(array, " ");
p1 = strtok(NULL, " ");
p1 = strtok(array, " ");
p1 = strtok(NULL, " ");

printf("%c", p1);
Run Code Online (Sandbox Code Playgroud)

Roo*_*oke 5

strtok()实际上用文字'\ 0'替换分隔符 - 实际上是用原始字符串写的.你第二次打电话strtok(array, "");,array现在看起来像

任何'\ 0'STRING'\ 0'WOULD DO

(例如,如果你打印字符串,你只会看到"任何")

由于strtok不会超出字符串的结尾,因此您只能第二次获得一个标记,并且strtok(NULL, " ");返回调用NULL.要解决您的问题,您需要将字符串复制到另一个位置以进行第二组操作,或者保存临时字符串指针.