#include <stdio.h>
int main()
{
int c=0,d=0;
FILE *f1;
f1 = fopen("F:\\num.txt" , "r");
while((c=getw(f1)) != EOF)
{
d+=c;
printf("\n%d",c);
}
fclose(f1);
printf("\n%d",d);
return 0;
}
我是C中文件的初学者。我试图从名为&#34; num.txt&#34;的文件中找到数字的总和。 。文件中的内容是:
12486
因此输出应为:21
但是当我运行代码时,我没有得到输出,而是得到类似的东西:
540155953
那么这个错误在哪里?
答案 0 :(得分:2)
while((c = fgetc(f1)) != EOF)
{
num = c - '0';
d+= num;
}
获取一个字符将其转换为整数而不是执行添加。
答案 1 :(得分:0)
看起来你不想使用getw。 getw读一个单词而不是char。 如果你想做1 + 2 + 8 + 4 + 6,那么使用:
while((c=getc(f1)) != EOF)
{
d+=c-48;
printf("\n%d",c-48);
}
答案 2 :(得分:0)
首先,您使用getw()函数读取整个单词 你必须使用读取单个字符(不是整数)的getc(),所以你必须将它转换为整数然后你可以在其中执行数学计算
while(( c= getc(f))!= EOF)
{
c = c-48;
d+=c;
printf("\n%d",c);
}