0
我正在閱讀關於流,並發現我們可以通過使用setvbuf()函數控制流...它被寫入行緩衝模式流時發送數據到文件當一個換行符是遇到和無緩衝,沒有緩衝,所以,我寫了下面的代碼...無緩衝的行爲行爲像行緩衝
#include<stdio.h>
int main()
{
setvbuf(stdin, NULL, _IONBF, 40);
setvbuf(stdout, NULL, _IONBF, 40);
while(1)
{
char a[40];
int n;
n=fread(a, 1, 4, stdin);
if(n>0)
fwrite(a, 1, n, stdout);
}
return 0;
}
,所以我認爲,因爲這些是無緩衝流,輸入要發送到只要我寫到標準輸出屏幕...但程序等待我在寫入每行之後按回車,然後只有輸出出現在屏幕上(作爲fwrite的結果)...我的問題是爲什麼程序等待輸入(即換行符),當這些沒有緩衝的流......
@attila ...但理論上在字符類型中應該立即傳遞給文件...不是嗎? – avinash
@avinash - 你在說什麼文件? 'stdin'的行爲就好像它是一個文件(用於各種函數調用),但它不是一個文件。另外,我不知道一個環境,它將立即將輸入的字符傳遞給標準輸入(談論直接用戶交互) – Attila
@attila ...這裏我稱之爲由filestream表示的任何東西作爲文件...還有我不是在談論優點...我只是問是否它是這樣的 – avinash