strtok函数中的问题

时间:2011-03-03 09:04:37

标签: c linux

我每个人都有一个数组

21 44 56 777

我正在使用strtok函数在空间的基础上分离它们

int i;
char *token;
token = strtok(payload1, " ");
printf ( "\n\n\nTOKEN  %s" , token);

我工作正常,显示21。 现在我想显示44使用相同的变量令牌如何做到

谢谢,请帮助我

3 个答案:

答案 0 :(得分:3)

您需要重复申请strtok。

token = strtok(payload1, " "); 
while ( token != NULL)
    {
    token = strtok(NULL, " ");
    // do your stuffs
    }

答案 1 :(得分:0)

试试这个

while(token != NULL){
   token = strtok(NULL, " ");
}

答案 2 :(得分:0)

strtok的实现在第一次调用时将指针保存到私有变量中。在后续调用第一个参数为NULL时,它将返回初始字符串的下一个标记。

由于strtok使用一些私有存储来保存指针,因此您无法同时处理两个不同的字符串,并且它不可重入。

如果你想起诉strtok使用reentrant版本,即使你没有运行多个踏板,strtok_r也会更安全。

例如,如果函数A使用strtok来解析字符串,并且在其中间调用另一个也使用strtok来解析另一个字符串的函数,则函数A将得到错误的结果。

另请注意,strtok会修改字符串,而ergo不能用于静态分配。