如何跳过行,直到找到某种格式的行?

时间:2018-12-01 16:47:13

标签: c scanf fgets

我正在尝试实现一个循环,该循环将从文件中读取行,直到找到具有特定格式的行。也就是说,直到找到带有以下内容的行:

数字数字字符数字

,直到换行符之前没有任何内容(空格或制表符)。具体来说,在找到这样一行之前,我必须经历的事情始终是“ lines.rows”矩阵的内容,其数据点不一定在“ lines”行中整齐地排序行元素。它们在每个元素之间可以有任意数量的空格,制表符或换行符。

但是,在lines.rows元素之后,在矩阵的最后一个元素之后的任意数量的空格,制表符或换行符之后,总是有我要扫描的格式的一行。

我已经尝试了几个小时,以不同的方式使用fgets和fscanf来实现此目的,但是输出完全不正确。现在我有这个:

        for (i=0;i<lines;i++)
    {
        for(j=0;j<rows;j++)
        {
            fscanf(in_fp, "%d", &temp);
        }
    }

,它可以工作,但是在大型矩阵中花费的时间太长。除此之外,例如,我尝试过

        for (i=0;i<lines;i++)
    {
            fscanf(in_fp, "%*[^\n]\n", NULL);
    }

,它不起作用。这个想法是跳到每一行的末尾,然后还读取新行,以便从下一行的开头开始。但是,到本周期结束时,我的文件没有指向正确的行(该行的格式上面特定-%d%d%c%d)。相反,它指向当前矩阵中间的“随机”线。

我也尝试了与上面相同的代码,但使用了fgets。当我在矩阵的所有行的fgets循环之后运行fscanf时,我仍然没有读取接下来应该出现的行(具有上面指定的格式)。

如果您对如何实现此目标或如何使该问题更易于理解有任何意见,我将非常感谢。

0 个答案:

没有答案