-4

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

3 5 6 1 9 7 4

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

我怎样才能为他们所有人做这个过程?

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

4

3 回答 3

1

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

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

要从文件中读取 1 个数字:

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

将数字与 5 进行比较:

if (number < 5)
{
    ...
}

PS 网站http://www.cplusplus.com有一些你需要的基本东西的例子。该站点专用于 C++,但在您的水平上,C 和 C++ 之间的差异很小,您可以将示例用于您的工作(如果您理解它们)。

示例:fscanf(在页面底部)

于 2013-10-24T21:42:21.287 回答
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尚未到达末尾时更改第一个以阅读。

于 2013-10-24T21:42:22.067 回答
1

一次读一行并数数。当你达到 7 时,那是你的第七行。使用fgets. 一旦你有了这条线,你就可以strtol在循环中使用将每个值作为整数读取。

参考:fgetsstrtol

于 2013-10-24T21:34:51.583 回答