我正在尝试强制我的C程序到行缓冲区(stdout将由java程序捕获),但它似乎总是完全缓冲。以下是一些示例代码:
#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,那么在输入char之前我看不到输出。只有当我使用_IONBF时才会在getchar()之前看到输出。 _IOLBF不应该这样做,因为“Hello World \ n”包含'\ n'?
我正在使用visual c ++ 2005。
由于
答案 0 :(得分:3)
根据this Microsoft documentation:
_IOLBF: 对于某些系统,这提供了行缓冲。但是,对于Win32,行为与_IOFBF - Full Buffering相同。