问题描述
我正在尝试编写接受整数输入并打印它们的 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);