【发布时间】:2021-04-02 12:58:32
【问题描述】:
在我的 fgetc.in 文件中我有 9,而在 fgetc.out 中它显示的是 41 而不是 9。我很困惑我的代码有什么问题,但我猜是 EOF 有问题。
#include<stdio.h>
int main(){
FILE *in = fopen("fgetc.in", "r");
FILE *out = fopen("fgetc.out", "wt");
char c;
int a = 0;
c = fgetc ( in );
a = c - '0';
while(c != EOF ){
c = fgetc ( in );
a = a * 10 + (c - '0');
}
fprintf(out, "%d" , a);
fclose(in);
fclose(out);
return 0;
}
【问题讨论】:
-
@RussBear
atoi()的参数是字符串,而不是单个字符。 -
c - '0'是将单个数字转换为相应整数的正确方法。 -
你说得对,我实际上把
char c和char* c混淆了。我以前从未见过c - '0',谢谢。 -
您的输入文件中可能有其他字符(例如空格或换行符)。你没有做任何事情来避免它们,所以如果它们是数字,它们最终会进入你的值计算。