在 strtok 函数中需要帮助
#include<stdio.h>
#include<string.h>
int main()
{
char string[100], *ptr = NULL;
memset(string, 0, 100);
strcpy(string, "abc#efg#xyz");
ptr = strtok(string, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
return 0;
}
输出是
ptr = [abc]
ptr = [efg]
ptr = [xyz]
这很好,但是如果第一个标记为空,那么第一次调用 strtok 将返回第二个标记。我的理解是,由于令牌不存在,它将在第一次调用中返回 null。
#include<stdio.h>
#include<string.h>
int main()
{
char string[100], *ptr = NULL;
memset(string, 0, 100);
strcpy(string, "#efg#xyz");
ptr = strtok(string, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
return 0;
}***
输出是
ptr = [efg]
ptr = [xyz]
ptr = [(null)]