C 为什么下面的代码一直在打印值10?
我要做一个循环,如果我输入字母表,那么ascii值就会出来。除非我键入“0” 但结果如下。结果下面是我编写的代码。值10从何而来 按任意字母 A. 65 按任意字母 10 按任意字母C 为什么下面的代码一直在打印值10?,c,loops,C,Loops,我要做一个循环,如果我输入字母表,那么ascii值就会出来。除非我键入“0” 但结果如下。结果下面是我编写的代码。值10从何而来 按任意字母 A. 65 按任意字母 10 按任意字母 char aski; while(1) { printf("Press any Alphabet\n"); scanf("%c", &aski); if (aski == '0') break; else
char aski;
while(1)
{
printf("Press any Alphabet\n");
scanf("%c", &aski);
if (aski == '0')
break;
else
printf("%d\n", aski);
}
按enter键时,实际上是在创建一个\n(新行),该字符的值为10,这就是正在打印的内容
char c = '\n';
printf("%d",c);
结果会给你10分
试试这个
char aski;
scanf("%c ", &aski);
请注意%c后面的空格,这确保读取所有输入的空白。
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;
}
PS:我在输入b之后停止了执行。值
10
恰好是换行符'\n'
的ASCII编码。现在想一想为什么您可能会将换行作为输入…请参见此。scanf(“%c”&aski)代码>这不是好的做法。请参阅上面的链接。空格应该放在%c
之前,而不是之后,否则它将等待额外的输入。你们说得对,我这端的大脑会快速放屁:)
Press any Alphabet
a
97
Press any Alphabet
b
98