如何让控制台程序的打印输出实时写入到文件和显示在屏幕显示器上

本文介绍了如何在编写控制台程序时处理大文本输出问题,特别是在Windows10中,通过重定向、tee工具和fflush函数的应用,实现在屏幕和文件中的同步输出并优化延迟问题。
摘要由CSDN通过智能技术生成

       我们在编写控制台程序时,经常会使用“ printf ”指令打印输出到屏幕,并且使用重定位符号 “>” 输出到文件。

       微软这么定义控制台程序的输出:“屏幕缓冲区是一个在控制台窗口中输出的二维字符和颜色数据数组。 一个控制台可以有多个屏幕缓冲区。 活动屏幕缓冲区是指屏幕上所显示的缓冲区。系统在创建新控制台时就会创建一个屏幕缓冲区”。

       在windows10下,这个缓冲区的长度最大为9999行。也就是输出窗口最多保存9999行内容,再来新的内容,旧的内容就会被挤出去。

        有时我们需要打印输出大于9999行内容,又希望能检索到9999行之前的内容,这时就需要能写入到文件中。简单的办法是使用重定向符号,例如 “myapp >> 1.txt”。

        但我们又希望能够在屏幕上同步观察怎么办?在linux系统下,可以使用tee将软件打印同时输出到屏幕上和文件中,或者同时输出到屏幕和多个文件中,在windows也可以下载一个第三方的tee软件完成相应的工作。(方法见:Windows系统下实现控制台软件的打印输出同时输出到屏幕和文件中_windows tee-CSDN博客 )

         但此时,受到windows的打印输出缓冲的影响,你会发现打印内容不能实时输出,特别是打印间隔比较长,内容又不多的时候。此时,我们可以在主程序的循环周期中加入fflush()函数的调用,同步打印到屏幕和输出到文件就可以实时进行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值