C程序搜索文件中的数字大于100

时间:2015-02-25 06:10:32

标签: c file

目标是编写一个int函数,该函数返回文本文件中大于100的数字的出现次数。该函数应该接收文件指针作为参数。

到目前为止,这是我的代码:

#include <stdio.h>
int function(FILE *infp);

int main ()
{
        FILE *infp;
        printf("\n%d\n",function(infp));
}

int function(FILE *infp)
{
        int num, counter=0;
        if ((infp = fopen ("text.txt", "r")) == NULL)
                printf ("\ncannot open the file text.txt\n");
        while ((num = getc())!=EOF)
        {
                if (num>100)
                    counter++;
        }
        fclose(infp);
        return (counter);
 }

它始终输出0.我认为getc不是在这里使用的正确命令,或者我格式化文本文件错误?任何帮助都会很棒

3 个答案:

答案 0 :(得分:1)

这里你使用getc()来捕获文件中的数字但你的getc()一次只能给你一个字符 例如:


如果您的文件内容如下:“103 9”; 然后你的getc()会在第一次给出“1”,然后它会给你“0”然后“3”。 通过这种方式,你永远不会完全阅读一个数字,而且你一次只能获得一个角色。 要摆脱这个,你可以使用:fscanf(infp,“%d”,&amp; num); .... 这将一次性给你一个完整的数字。 然后你可以很容易地匹配数字。


答案 1 :(得分:0)

在C中完成这项工作将会有点工作。如何抓取文本内容。在空间上分裂。验证代表基数为10 [48,57](区间符号)的正确ASCII字符,您可以应用转换算法,例如atoi

答案 2 :(得分:0)

getc()从流中读取下一个字符。你想要的是通过一些分隔符(让我们说空间)来标记文件。有关详细信息,请参阅here