这是我的代码:
for(b = 0; b < 3; b++)
{
int col1 = 0;
printf("b= %d\t" , b);
fgets(payload, sizeof payload, f2);
fputs(payload, stdout);
char *token;
token = strtok(payload, " ");
token = strtok(NULL, " ");
token = strtok(NULL, " ");
while ( token != NULL)
{
int pp;
sscanf(token, "%d", &pp);
token = strtok(NULL, " ");
printf("%d\n" ,pp);
grapharray[b][col1++] = pp;
}
}
在这段代码中,我逐行从文件中获取一些值并将它们复制到2D数组中。我正在从文件中跳过前两个值。除了我的循环之外,一切正常 - 它将值正确复制到grapharray[b][col1]
的位置b==0
,然后跳过b==1
并直接移至b==2
并复制下一个grapharray[2][col1]
处文件的一行。任何人都可以帮我解决这个问题吗?非常感谢,我将不胜感激。
答案 0 :(得分:3)
如果你的第二个
token = strtok(NULL, " ");
返回NULL,不会输入你的while循环,看起来好像b = 2被丢弃了 =&GT;用调试器检查令牌的值,然后检查你的解析器。
修改强>:
如果您的解析数据包含制表符(\ t)而不是空格,则可能会发生这种情况。也许你想在你的标记器中使用“\ t”。
答案 1 :(得分:0)
如果您尝试从文件中一次读取一行,fgets()不是最好的工具。如果您在目标数组中有空间的行中有更多字符,则不会读取这些字符。