失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C++中fprintf()函数与stdout stderr

C++中fprintf()函数与stdout stderr

时间:2023-02-17 17:26:46

相关推荐

C++中fprintf()函数与stdout stderr

1 fprintf()函数

fprintf()函数的作用是将格式化的数据打印到流中。该函数的格式为

intfprintf(FILE *stream, const char *format [, argument ]...);

其中,参数stream表示数据要被打印到的流。对于fprintf()函数的详细用法,请参考《利用文件流实现文件读写》

和《C++中scanf和printf系列函数简介》

2 stdout和stderr

stdout是标准的输出流,而stderr是标准的错误输出流。stdout和stderr的类型都是FILE*,在stdio.h中定义。默认情况下,stdout和stderr中的数据都会被打印到屏幕上。

3 将stdout和stderr作为fprintf()函数的参数

fprintf()函数的第一个参数是FILE*,而stdout和stderr的类型都是FILE*,所以stdout和stderr都可以作为fprintf()函数的第一个参数。

2.1 默认输出

对于fprintf()函数和stdout和stderr,有如下代码

fprintf(stdout, "Hello ");fprintf(stderr, "World!");

因为在“2 stdout和stderr”中提到,默认情况下,stdout和stderr中的数据都会被打印到屏幕上,所以此时的输出如图1所示。

图1 默认输出

2.2 重定向输出

可以通过指令的方式将stdout和stderr的输出修改为指定的文件中。

2.2.1 默认方式重定向

使用“2.1 默认输出”中提到的代码,在编译程序之后,在exe程序所在目录的cmd下,输入如下指令

图2 默认重定向

其中,1.exe是编译生成的exe文件;右尖括号“>”是重定向符号;“1.txt”是重定位之后的目的文件。需要注意的是,使用默认方式重定向,只能重定向stdout,而不能重定向stderr,即此时stdout流中的数据保存到了1.txt,而stderr流中的输入依然在屏幕中显示,如图2、图3所示。

图3 默认重定向的目的文件

2.2.2 参数指定方式

默认方式重定向只能重定向stdout流中数据的目的,可以通过指定参数的方式重定向stdout流和stderr流中数据的目的,如图4所示。

图4 参数重定向

从图中可以看到,参数数字1表示重定向stdout流中数据的目的,而参数数字2则表示重定向stderr流中数据的目的。需要注意的是,参数数字与右尖括号“>”之间不能有空格。

使用图5所示的指令,可以将同时将stdout流和stderr流中数据重定向。

图5 同时重定向

此时,1.txt的内容如图6所示。

图6 同时重定向的目的文件

如果觉得《C++中fprintf()函数与stdout stderr》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。