strtok()函数在C中工作不正常
我使用以下代码在C语言的循环中应用了strtok()函数在C中工作不正常,c,gcc,strtok,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 1
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()
后的行和偶数行
我不知道为什么我没有把每个数字分开
i、 e在
103 70 105 150
中,我需要所有数字以偶数行分隔。在您的情况下,printf参数的计算顺序与您想象的相反。事实上,参数的求值顺序在C中没有严格定义,因此您应该将代码重新排列为:
printf("%d ",atoi(strtok(line," ")));
printf("%d ",atoi(strtok(NULL," ")));
printf("%d\n",atoi(strtok(NULL," ")));
您不会编写依赖于函数参数求值顺序的程序。此外,在将strtok的结果传递给atoi()之前,您需要检查它的结果。如果您将NULL传递给atoi(),您的程序将停止并着火。最好在。。。六羟甲基三聚氰胺六甲醚。。。9项单独声明