如何从C中的某一行读取信息?

时间:2013-10-24 21:31:03

标签: c

我有一个results.txt文件,在第七行我的数字形式如下:

3 5 6 1 9 7 4

我想收集信息中有多少> 5以及其中有多少< 5

我如何为所有人完成此过程?

顺便说一句,第七行是文件的最后一行。

3 个答案:

答案 0 :(得分:1)

一次只读一行并计算。当你达到7时,这就是你的第七行。使用fgets。获得该行后,您可以在循环中使用strtol将每个值读取为整数。

参考:fgetsstrtol

答案 1 :(得分:1)

要在输入文件中跳过1行:

fscanf(f, "%*[^\n]\n");

从文件中读取1个数字:

int number;
fscanf(f, "%d", &number);

将数字与5进行比较:

if (number < 5)
{
    ...
}

P.S。网站http://www.cplusplus.com提供了一些您需要的基本内容示例。该站点专用于C ++,但在您的级别上,C和C ++之间的差异很小,您可以将这些示例用于您的工作(如果您了解它们)。

示例:fscanf(位于页面底部)

答案 2 :(得分:1)

#include <stdio.h>

#define LINE_MAX 1024

int main() {
    int line_count = 7;
    int fd = open('file', r);
    int smaller_than_five = 0, bigger_than_five = 0;
    int number;

    while (line_count != 0) {
        fgets(input_line, LINE_MAX, fd);
        line_count--;
    }
    while(sscanf(input_line, "%d", &number) != EOF) {
        if (number > 5) bigger_than_five++;
        else if (number < 5) smaller_than_five++;
    }

    /*
     * Now you have:
     *  smaller_than_five which is the count of numbers smaller than five
     *  bigger_than_five which is the count of numbers bigger than five
     */
     return 0;
}

当数字在第七行时,这是有效的。如果它们位于最后一个(但可能是第二个或第51个),则必须在未到达时更改要读取的第一个while