这是我的代码:
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;
}
}
在此代码中,我逐行从文件中获取一些值并将它们复制到二维数组中。我正在跳过文件中的前两个值。一切正常,除了我的循环——它将值正确复制到位置 grapharray[b][col1]
,其中 b==0
,但随后跳过 b==1
并直接移动到 b==2
并在 grapharray[2][col1]
处复制文件的下一行。谁能帮我解决这个问题?非常感谢,我将不胜感激。
最佳答案
如果你的第二个
token = strtok(NULL, " ");
返回 NULL,你的 while 循环将不会进入,看起来 b=2 被丢弃了 => 使用调试器检查 token 的值,并可能检查您的解析器。
编辑:
如果您解析的数据包含制表符 (\t) 而不是空格,则很可能会发生这种情况。也许您想在分词器中使用“\t”。
关于c++ - for循环表现怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5794990/