我打算做一个循环,如果我输入字母表,那么ascii值就会出来。除非我输入'0‘。
但结果如下所示。这是我在结果下面做的代码。值10从何而来?
按任意字母A 65按任意字母10按任意字母
char aski;
while(1)
{
printf("Press any Alphabet\n");
scanf("%c", &aski);
if (aski == '0')
break;
else
printf("%d\n", aski);
}发布于 2020-11-20 22:00:17
scanf读取额外的\n。\n的ASCII是10。这就是为什么你会得到10。我建议你使用getchar()来读取额外的\n。
#include <stdio.h>
int main()
{
char aski;
while (1)
{
printf("Press any Alphabet\n");
scanf("%c", &aski);
getchar();
if (aski == '0')
break;
else
printf("%d\n", aski);
}
return 0;
}输出为:
Press any Alphabet
a
97
Press any Alphabet
b
98PS:我停止执行后,输入b。
发布于 2020-11-20 21:54:59
当您按enter键时,您实际上是在创建一个\n (新行)此字符的值为10,这就是正在打印的字符。
char c = '\n';
printf("%d",c);会给你10分。
尝尝这个
char aski;
scanf("%c ", &aski);注意%c后面的空格,这确保读取所有输入的空格。
https://stackoverflow.com/questions/64930517
复制相似问题