c++ - for循环表现怪异

标签 c++ c gcc

这是我的代码:

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/

相关文章:

c++ - 在 MSVC C++ 中强制内联 lambda

c++ - 没有这样的文件或目录,但存在文件

c++ - libavcodec 视频解码不起作用

C 在 Union 中释放一个字符串

c - GCC 优化可能产生的副作用是什么?

gcc - 函数 abs 的隐式声明 - gcc-5.1.0

c++ - 在 CUDA 中用小 M 对两个 MxN 矩阵执行逐 vector 点积的最快方法是什么?

c - 接受数组输入,直到输入特定值

c - C中的二进制数组压缩

c - gcc 使用 -l 和 -L 链接库