为什么 getchar() 函数在这里不起作用?

问题描述

我正在尝试编写接受整数输入并打印它们的 C 代码,除非输入换行符 ('\n')。

但它永远不会返回我输入的值。 如果我输入 6,我希望它打印 6,但它给我 54。事实上,无论我期望什么数字,它都会给我 48+(我的数字)。请帮忙!

这是我的代码

#include <stdio.h>
int main(int argc,char *argv[])
{
   int counter = 0;
   int num; 
   while (counter <=1)
   {
       num = getchar();
       if (num == '\n')
       {
           break;
       }
       counter+=1;
       printf("%d",num);
   }
    return 0;
}

解决方法

看起来像是打印了字符的 ASCII 代码。

使用 %c 打印一个字符:

printf("%c",num);

或者从值中减去'0'0的字符代码),将数字字符转换为相应的整数:

printf("%d",num - '0');
,

那是因为您正在打印整数的 ascii 等价物。您可以在阅读后对您获得的输入进行类型转换,即 int(num) 或者您可以像这样使用 scanf :

int num;
scanf("%d",&num);