我知道C ++也是如此:
buffering output
cerr: unbuffered stderr
clog: buffered stderr
cout: buffered stdout
cerr
和cout
的C等价物:
cerr: fprintf(stderr, ...)
cout: fprintf(stdout, ...) or printf(...)
是否有clog
的等效内容?
答案 0 :(得分:2)
是的,使用setvbuf
和完全缓冲(_IOFBF
):
完全缓冲:在输出时,一旦缓冲区满了就写入数据(或 酡)。在输入时,缓冲区在输入操作时被填充 请求,缓冲区为空。
#include <stdio.h>
int main(void)
{
char buff[BUFSIZ];
setvbuf(stderr, buff, _IOFBF, BUFSIZ);
fprintf(stderr, "Hello world\n");
getchar();
fflush(stderr);
return 0;
}
在每个系统上选择BUFSIZ的值以便进行流I / O. 高效。因此,最好使用BUFSIZ作为大小 调用setvbuf时缓冲。
答案 1 :(得分:1)
不,C只有stderr
和stdout
以及标准输出流。但您可以stderr
随意设置setvbuf
上的缓冲。