【发布时间】:2010-04-05 20:42:09
【问题描述】:
我有一个像这样使用 strtok 的函数
void f1(char *name)
{
...
char *tmp;
tmp = strtok(names, " ,");
while(tmp)
{
...
tmp = strtok(NULL, " ,");
}
...
}
我有一个电话 f1("abc,def");
问题是在第一次调用 f1 得到 abc,def 并且在第二次通话中只得到 abc
我很困惑..为什么会这样?
【问题讨论】:
-
这是真正的代码吗?只有你在函数中有
names和name作为参数。 -
strtok修改您传递给它的字符串。如果你不想这样,你需要保存一个副本。并且因为strtok修改了字符串,所以使用只读字符串(strtok("abc,def");)调用它是未定义的。如果可以,请发布真实代码。