我想从一个字符串获得令牌,然后得到令牌的子令牌,这样的短节目:的strtok()不处理第二令牌
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void f(char *bak)
{
char *token, *delim = ".";
token = strtok(bak, delim);
while(token) {
printf("f(): token: %s\n", token);
token = strtok(NULL, delim);
}
}
int main(void)
{
char str[] = "a.1.2 x.y";
char *token, *delim = " \t\n\r";
token = strtok(str, delim);
while(token) {
printf("main: token: %s\n", token);
char bak[100];
strncpy(bak, token, sizeof(bak));
f(bak);
token = strtok(NULL, delim);
}
return 0;
}
但是,它只能显示第一令牌(“a.1.2”),而不是第二个:
main: token: a.1.2
f(): token: a
f(): token: 1
f(): token: 2
这是怎么发生的?谢谢。
使用'const char *'作为字符串文字。更好的是,'std :: string'。 – chris
C或C++?选择一个_.... –