将C程序设置为行缓冲区将不起作用

时间:2011-07-11 16:51:43

标签: c stdout buffering

我正在尝试强制我的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。

由于

1 个答案:

答案 0 :(得分:3)

根据this Microsoft documentation

  

_IOLBF:           对于某些系统,这提供了行缓冲。但是,对于Win32,行为与_IOFBF - Full Buffering相同。