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]
これは問題ありませんが、最初のトークンが null の場合、strtok の最初の呼び出しで 2 番目のトークンが返されます。私の理解では、トークンが存在しないため、最初の呼び出しで 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)]