2011-07-11 60 views
1

我試圖強制我的C程序行緩衝區(標準輸出將被一個Java程序捕獲),但它似乎總是緩衝而不是。下面是一些示例代碼:設置C程序到行緩衝區將不起作用

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 
    char c; 
    setvbuf(stdout, NULL, _IOLBF, BUFSIZ); 
    printf("Hello world\n"); 
    c = getchar(); 
    printf("got char: %c\n", c); 
} 

如果我指定_IOLBF或_IOFBF,那麼我沒有看到輸出,直到我輸入一個字符。只有當我使用_IONBF時,纔會在getchar()之前看到輸出。由於「Hello World \ n」包含'\ n',因此_IOLBF不應該這樣做嗎?

我使用Visual C++ 2005

由於

+0

您是否檢查過'setvbuf'的返回值? – Nemo

+0

是的,它是返回0. – Dan

回答

3

根據this Microsoft documentation

_IOLBF: 對於某些系統中,這提供行緩衝。但是,對於Win32,其行爲與_IOFBF - 完全緩衝相同。

+0

啊,這樣做。謝謝! – Dan