前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++中fprintf()函数与stdout、stderr

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

作者头像
用户7886150
修改于 2021-02-14 07:20:28
修改于 2021-02-14 07:20:28
3.5K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ fprintf()

1 fprintf()函数 

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

int fprintf(

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 同时重定向的目的文件

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档