我想编写一个代码来获取一个位数未知的数字(意味着它可以是 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
是 ASCII '3'
的值。有一种简单的方法可以将字符的 ASCII 值转换为整数值,只需减去 '0'
的 ASCII 值:
finalnumber = finalnumer * 10 + nextdigit - '0';
此外,在 getchar
中使用 char
变量时要小心,因为 getchar
被声明为返回一个 int
.您可能还想检查返回的 EOF
(这就是您需要 int
变量的原因)。
关于c - 使用 getchar() 获取未知长度的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20049362/