我想從一個字符串獲得令牌,然後得到令牌的子令牌,這樣的短節目:的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++?選擇一個_.... –