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

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

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值