admin管理员组

文章数量:1570219

printf函数是C语言的标准函数库中的一个输出函数,它的功能就是表面上把数据输出到屏幕中。这里要注意一下,我提到了一个词是“表面”!看似好像C语言的printf函数把数据输出到屏幕上显示出来,其实printf函数是把数据输出给一个“流”,这个流叫做“stdout”,而不是真的直接输出到屏幕。是不是有点意思?下面看我详细讲来!

一、计算机的输出设备

计算机有很多的输出设备,我们最常见的就是显示器,也就是常说的“屏幕”。但是计算机的输出设备可远远不止显示器这个屏幕。还有一些输出设备,比如:打印机。你办公的电脑和你学习的电脑一般都会连接着一台打印机吧,此时打印机就算是一个输出设备;

音箱。电脑内置的音箱毕竟性能有限,不足以播出优美的歌声。有的音乐发烧友会使用电脑外带一组音箱,通过更专业的音箱来享受较好的音乐效果,这里的音箱也是输出设备。

U盘、硬盘等。你常用的U盘等接在电脑的USB接口上,只要向U盘拷贝数据,此时U盘也是输出设备。

一台计算机可以外接这么多的输出设备,但是C程序代码中的printf函数可不知道有这么多的外接设备,它是怎么向外输出数据的呢?

二、stdout流

既然计算机外接了这么多的输出设备,C语言的printf函数显然不可能直接跟显示器、跟打印机、跟音箱打交道,聪明的程序设计者想出了一个方法:把所有的这些外接的输出设备全部用一个叫做“stdout流”的东西统一表示。说白了,就是在C程序和具体的输出设备之间多了一个stdout流。

对于C程序而言,C程序的printf函数只把数据输出到stdout流,再由操作系统把数据从这个stdout流中拿出给到具体的输出设备。比如如下这段C程序代码:

如果直接编译运行,C程序代码会将字符串'1234"输出到stdout流,再由操作系统将字符串“1234”送到显示器上显示。

如果我用一个重定向操作符,就像这样:

那么C程序代码还是会将字符串“1234”输出到stdout流,此时操作系统会将字符串“1234”送到一个文本文件“1.txt”中了。当你打开这个文本文件,你会发现其中的内容就是“1234”。

所以,C语言中的printf函数并不是将输出直接输出到显示器屏幕,而是输出到一个叫做stdout的流中,这个stdout流如果代表了显示器,那么printf函数就输出到显示器屏幕;如果代表了其他的输出设备,printf函数就输出到其他的输出设备上。你明白了吗?

本文标签: 屏幕语言发送到会将字符