为什么这个C代码有意想不到的行为

0 c putchar getchar

我编写了以下简单的C代码,它编译并运行良好.但它的行为方式我不明白.我输入一个字符,然后将其打印在屏幕上.但是当我按下返回键时,它会打印整行.因此,如果我键入字母a,b和c,abc将在命令行上打印两次.这是为什么这样做的?

#include <stdio.h>


int main(){


    int c;
    while((c=getchar())!=EOF){
        putchar(c);
    }

return 0;

}
Run Code Online (Sandbox Code Playgroud)

nos*_*nos 5

因为您的终端是线路缓冲的.

它在遇到换行符之前不会向你的程序发送数据,虽然它会将字符回显到屏幕上,这样你就可以看到它们击中你的键.