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
由於
您是否檢查過'setvbuf'的返回值? – Nemo
是的,它是返回0. – Dan