#include <stdio.h>
int main()
{
int a,b;
printf("enter number\n");
scanf("%d",&a);
printf("enter number\n");
scanf("%d",&b);
printf("Numbera are %d %d",a,b);
return 0;
}
运行程序
Input 12 a
Outptut 12 0
我不应该得到输出12 97(a的ASCII值)
答案 0 :(得分:3)
否,您不应获得“ 12 97”。这不是%d
的工作方式。 %d
只能看到数字,并且只能看到数字。
如果您这样修改程序:
int r1, r2;
printf("enter number\n");
r1 = scanf("%d",&a);
printf("enter number\n");
r2 = scanf("%d",&b);
printf("scanfs returned %d %d\n", r1, r2);
然后再次输入“ 12 a”,您将看到
scanfs returned 1 0
表示第二个scanf
调用未成功读取或转换任何内容。 (当您使用scanf
时,最好检查返回值以确保所有转换都能正常进行。)
如果要将字符读取为字符,可以使用%c
:
char b;
r2 = scanf(" %c",&b);
但是请注意,%c
与大多数其他scanf
格式说明符有点不同。正如我在此处所示,您可能需要一个明确的领导空间。有关更多信息,请参见this other question。 (感谢@ user202729的链接。)
答案 1 :(得分:0)
扫描数字并自动翻译时无法输入字符。您需要将其读取为char并转换为int。