C语言中的 stdout 是一个定义在<stdio.h>的宏(macro),它展开到一个 FILE* (“指向 FILE 的指针”)类型的表达式(不一定是常量),这个表达式指向一个与标准输出流(standard output stream)相关连的 FILE 对象。
扩展资料:
C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。
C语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数,因此,C语言程序一般是由大量的小函数而不是由少量大函数构成的,即所谓“小函数构成大程序”。这样的好处是让各部分相互充分独立,并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小“构件”, 用来构成新的大程序。
使用 printf 或 cout 打印内容时,输出永远不会直接写入“屏幕”。而是,被发送到 stdout。 (stdout 就像一个缓冲区)
默认情况下,发送到 stdout 的输出然后再发送到屏幕(我们可以根据需要将其重定向到其他文件/流)。同样,stdin 默认映射到键盘,但可以重定向到任何其他文件/流。
现在,默认情况下,stdout 是 行缓冲 的。这意味着,发送到 stdout 的输出不会被立即发送到屏幕以供显示(或重定向文件/流),直到它在其中获得换行符。因此,如果要覆盖默认缓冲行为,则可以使用 fflush 清除缓冲区(立即将所有内容发送到屏幕/文件/流)。
过一段时间后输出 hello world! 再过一段时间输出 Welcome.
立即输出 Hello, 过一段时间输出 world!,又过一段时间输出 Welcome.
能理解吗?
不能理解也没关系,我也感觉我没说清楚 :)
就单拿输出到屏幕上来说,printf 这样的函数不是直接打印到屏幕上的,而是先放在一个缓冲区中(stdout)中。如果收到了一个换行符,就会把这个缓冲区的内容打印到屏幕上,并清空。而 fflush 的作用就是直接把缓冲区的内容打印到屏幕上,并清空缓冲区。不必等换行符 。
stdout 是 FILE * 型对象,可以理解为 文件指针。
stdout 输出 指向 标准输出设备 -- 屏幕缓冲区/屏幕
用 freopen 可以转向:
freopen ("myfile.txt","w",stdout)
命令行 用 > 或 >>可以转向
a.exe >a.log( 写文件)
a.exe >>aa.dat (写附加文件)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)