我想写一个代码,得到一个未知位数的数字(意味着它可以是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变量)。

09-08 00:08