fprintf(stderr, "%s:%d", __FILE__, __LINE__,)
这里的stderr是会打印到屏幕还是生成一个文件(文件名是什么)呢?谢谢!
回答:会打印到屏幕上。
因为:(见 MSDN)
fprintf 函数的功能是: Print formatted data to a stream
格式化输出数据到流,这个流并没有特指是文件流。
关于 stdin、stdout、stderr 的说明如下:
By default, standard input is read from the keyboard, while standard output and standard error are printed to the screen
默认情况下,标准输入从键盘读取,同时标准输出和标准错误会打印到屏幕。
在控制台测试 :
void main( void )
{
fprintf(stderr, "%s:%d", __FILE__, __LINE__);
system("pause");
}
会在屏幕显示当前文件的路径和fprintf语句所在的行数。 ^_^\
首先在
test.c
中输入如下的代码
- void main()
- {
- fprintf(stderr,"stderr!");
- fprintf(stdout,"stdout!");
- printf("printf!");
- }
启动cmd,进入到当前目录下(目录从c:到d:方法:cd :d)
上面程序编译成.exe文件,使用命令:cl test.c
直接执行.exe输出stderr!stdout!printf!
若将输入重定向到一个temp.txt文件中,运行:test>temp.txt 结果如下:
stderr!
查看temp.txt文件内容为:
stdout!printf!
说明:
stdout -- 标准输出设备(printf("..")) 同 stdout。
stderr -- 标准错误输出设备 两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
strerr是作为程序运行过程中的错误显示出来的,若想将它重写向到某文件中,需要运行如下命令:
test 2>temp.txt
这样运行结果就为:
stdout!printf!
查看temp.txt文件的内容是:
stderr!