我有以下代码
char c;
scanf("%c",&c);
现在我已经读过“%c”会消耗包括ENTER
在内的空白。但是当我按下ENTER
(按下任何字符之前)%c
时,为什么不接受它?< / p>
那么为什么它接受由于先前的调用而在缓冲区中出现的ENTER
密钥而不是在按任何字符之前接受ENTER
密钥?
答案 0 :(得分:0)
我假设您的问题是为什么某些输入(包括Enter
)未传递给scanf()。
它不是%c或%d或任何其他类型。
你看,像Esc
这样的特殊字符不会被IO功能所限制。但是,例如,执行代码时打开的控制台会识别它们。
答案 1 :(得分:0)
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
printf("%d",ch);
return 0;
}
上述程序的输出 : - (按下第一个键时)
10
上面的程序生成10因为'\n'
的ASCII代码是10。
* 所以对我来说,它甚至把新行字符作为第一个输入。 *