如何"%c"规范适用于scanf()?

时间:2014-04-06 16:42:15

标签: c scanf

我有以下代码

char c;
scanf("%c",&c);

现在我已经读过“%c”会消耗包括ENTER在内的空白。但是当我按下ENTER(按下任何字符之前)%c时,为什么不接受它?< / p>

那么为什么它接受由于先前的调用而在缓冲区中出现的ENTER密钥而不是在按任何字符之前接受ENTER密钥?

2 个答案:

答案 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。

* 所以对我来说,它甚至把新行字符作为第一个输入。 *