通常,stderr和stdout被用来输出内容显示到屏幕,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出
重定向
到文件。
stderr/stdout 重定向到文件
这里以stderr代码说明。
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE *stream = freopen( "freopen.out", "w", stderr );
if( stream == NULL )
fprintf( stdout, "error on freopen\n" );
else
{
fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
fprintf( stream, "This will go to the file 'freopen.out'\n" );
fprintf( stderr, "Also you can do it like this!\n" );
fclose( stream );
}
// windwos下读取文件 freopen.out
system( "type freopen.out" );
getchar();
return 0;
}
执行结果如下,
stderr与stdout的区别
stdout(标准输出),输出方式是行缓冲。输出的字符会先存放在缓冲区,等按下回车键时才进行实际的I/O操作。
stderr(标准出错),是不带缓冲的,这使得出错信息可以直接尽快地显示出来。