2015-06-27 46 views
0

後,我已經寫了,是爲了管stdinstdout一個簡單的C程序沒有緩衝字符:標準輸出緩衝甚至fflush

#include <stdio.h> 

int main (int argc, char *argv[]) 
{ 
    int c; 

    while ((c = getchar()) != -1) { 
    putchar(c); 
    fflush(stdout); 
    } 

    return 0; 
} 

不過,這一方案似乎仍然緩衝字符,直到換行符,儘管致電fflush。爲什麼會發生這種情況,我如何解決它(如果可能)?

回答

1

在這種情況下,緩衝由終端驅動程序完成,終端驅動程序不會將輸入發送到您的程序,直到您按ENTER。所以你的程序甚至沒有任何字符,並且甚至沒有調用fflush()。它只是在等待getchar()電話的輸入。