目标是编写一个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不是在这里使用的正确命令,或者我格式化文本文件错误?任何帮助都会很棒
答案 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。