strtok()函数在C中无法正常工作

时间:2014-04-02 12:57:15

标签: c gcc strtok

我已使用以下代码在C语言的循环中应用strtok()

printf("%s",line);
printf("%d %d %d\n",atoi(strtok(line," ")),atoi(strtok(NULL," ")),atoi(strtok(NULL," ")) );

输出结果为:

103 70 105 150

103 0 0

115 17 127 21

115 127 17

10 108 105 97

10 105 8

13 122 43 8

13 43 122

50 187 35 71

50 35 187

奇数行表示使用strtok()后的行和偶数行。

我不知道为什么我没有将每个号码分开

103 70 105 150我需要所有数字均匀分开。

1 个答案:

答案 0 :(得分:6)

在您的情况下,printf参数的评估顺序与您的想法相反。事实上,参数的评估顺序没有在C中严格定义,因此您应该将代码重新排列为:

printf("%d ",atoi(strtok(line," ")));
printf("%d ",atoi(strtok(NULL," ")));
printf("%d\n",atoi(strtok(NULL," ")));