c - 使用 getchar() 获取未知长度的整数

标签 c int

我想编写一个代码来获取一个位数未知的数字(意味着它可以是 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 值),实际上不再允许我输入数字。我做错了什么?

最佳答案

是的,51ASCII '3' 的值。有一种简单的方法可以将字符的 ASCII 值转换为整数值,只需减去 '0' 的 ASCII 值:

finalnumber = finalnumer * 10 + nextdigit - '0';

此外,在 getchar 中使用 char 变量时要小心,因为 getchar 被声明为返回一个 int .您可能还想检查返回的 EOF(这就是您需要 int 变量的原因)。

关于c - 使用 getchar() 获取未知长度的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20049362/

相关文章:

c# - 哪个更利于可读性?

c - time(NULL) 在 PIC-IoT WG 开发板上返回 0

c - fscanf 上的段错误(核心已转储)

java - 在 Java 中比较 BigDecimal 和 int

在运行时在 c 中创建某个结构

c - Makefile 与 Fortran 和 C 混淆

C 程序 需要帮助修复我的单词排序程序代码

c - 事实与枚举

java - 严重的泛型问题 : int vs. Integer java

python - "is"运算符对整数的行为异常