在 getchar() 时输入回车键;被执行

Putting an enter key when getchar(); is executed

int main()
{
    int a;
    a = getchar();
    printf("%d", a);
}

output

10

这是当我编写这样的代码并仅在控制台上敲击 'enter' 键时。击键 'enter' 效果 1. 在缓冲区 2 中放置一个 '\n'。return 该值随后被获取(这是我对这种情况的理解)。怎么可能?这个结果就像按了两次回车键。我找到了一个相关的问题getchar,但是找不到可以帮助我理解的东西。

This result is like pressing enter key twice.

getchar()的行为,当它遇到换行符\n只有stdin中,有什么区别。


int main()
{
    int a;
    a = getchar();
    printf("%d", a);
}

显示以下的适当输出:

10

当你输入一个"Enter"击键时。


getchar() 等待输入,直到它在 stdin 中遇到换行符 \n 然后 returns 字符值直到那一刻;如果 \n 是遇到的唯一字符,getchar() 停止扫描并 returns 这个换行符,实际上这就是发生的情况。

在这种特殊情况下,您不需要再次按下 "Enter" 来影响 getchar() 停止扫描。