我想写一个代码,得到一个未知位数的数字(意味着它可以是100和1000000)。我想使用getchar
并编写了以下代码:
#include <stdio.h>
int main()
{
char nextdigit;
int finalnumber=0;
nextdigit=getchar();
while(nextdigit!='\n')
{
finalnumber=finalnumer*10+(int)nextdigit;
nextdigit=getchar();
}
printf("%d",finalnumber);
}
但似乎当我输入例如
3
时,它会打印51(可能是3
的ascii值),实际上不允许我再输入数字。我做错什么了? 最佳答案
是的,51
是'3'
的ASCII值。有一种简单的方法可以将字符的ASCII值转换为整数值,只需减去'0'
的ASCII值即可:
finalnumber = finalnumer * 10 + nextdigit - '0';
另外,在使用
char
变量时要小心,因为getchar
声明返回getchar
。您可能还想检查返回的int
(这就是为什么您需要一个EOF
变量)。