标准输入输出详解:从基本操作到缓冲区管理
需积分: 3 176 浏览量
更新于2024-07-31
收藏 128KB PDF 举报
"本章详细介绍了标准输入输出的相关操作,包括基本操作、非格式化输入输出、格式化输入输出等内容,适用于单片机嵌入式系统、PLC学习及电子元件选型等领域。"
在计算机编程中,标准输入输出是程序与用户交互的重要途径。第11章详细阐述了这个主题,特别是针对C语言的标准库函数,这些函数用于处理程序的输入和输出。
11.1 标准输入输出的基本操作
标准输入输出涉及三个关键文件:标准输入文件(stdin),通常对应于键盘;标准输出文件(stdout),通常显示在屏幕上;以及标准错误输出文件(stderr),也通常显示在屏幕上,用于输出错误信息。在C语言中,这些文件由FILE类型的指针表示,通过`fopen()`函数打开,`fclose()`函数关闭。`fopen()`函数接收文件名和模式参数,如"r"(读取)、"w"(写入)等,返回文件指针。`fclose()`则用于释放文件资源,关闭文件。
11.1.1 文件的打开
`fopen()`函数不仅分配资源,还为指定文件创建一个控制结构,并返回一个指向该结构的指针,此指针后续用于读写操作。
11.1.2 文件的关闭
使用`fclose()`函数可释放文件指针,结束对该文件的操作。关闭后的文件指针无效,不能再用于访问文件。
11.1.3 缓冲区的刷新
缓冲区管理是输入输出过程中的重要环节。`fflush()`和`fpurge()`函数用于清空缓冲区中的数据,确保数据及时写入或读出。`fflush()`常用于标准输出和错误输出的刷新,而`fpurge()`则用于清除特定流的缓冲。
11.1.4 缓冲区属性的设置
`setvbuf()`函数允许程序动态设置缓冲区的类型和大小。缓冲区类型包括全缓冲(_IOFBF)、行缓冲(_IOLBF)和无缓冲(_IONBF)。全缓冲在缓冲区满后才执行I/O,行缓冲在遇到换行符时执行,无缓冲则不缓存数据,如stderr。
11.2 非格式化输入输出
非格式化输入输出不涉及特定的格式化规则,如`fread()`和`fwrite()`函数用于读写二进制数据,`getchar()`和`putchar()`处理单个字符的输入输出,`getc()`和`putc()`则用于处理文本文件的字符级操作。这些函数直接与文件指针交互,不涉及数据的解析和格式转换。
11.3 格式化输入输出
格式化输入输出通常使用`printf()`和`scanf()`家族函数,它们允许按照指定的格式读取和写入数据,比如整数、浮点数、字符串等。格式化输入输出方便且灵活,但效率相对较低。
本章内容对于理解和编写处理输入输出的C程序至关重要,无论是简单的命令行工具还是复杂的系统应用,理解标准输入输出都是必要的基础。此外,对缓冲区的管理有助于提高程序性能和正确性,特别是在处理大量数据或实时反馈的应用中。
140 浏览量
140 浏览量
147 浏览量
210 浏览量
2022-05-15 上传
2021-10-13 上传
105 浏览量
142 浏览量
2022-11-21 上传
csdn_199
- 粉丝: 18
- 资源: 189
最新资源
- chat-app-master
- MAST-MOBILE:MAST Android应用程序源代码-Android application source code
- nanodegree-p3-classic-arcade-game:nanodegree-p3-classic-arcade-game
- Just_Java-app:这是我的第一拳Android项目,通过该项目,我通过Just Java应用程序了解了android的各种基础知识
- SIXSIGMA六标准差——教练级黑带师、黑带、绿带培训方案
- 数据营项目
- tool-conventions:支持使用WebAssembly的工具之间的互操作性的约定
- learn-bootstrap:这个 repo 是为我创建的,用于通过 tutorialls 学习引导程序
- FitJournal:Fit Journal应用程序的源代码-Android application source code
- 计时器
- 金融筹资管理
- thunderboard-android:这是Android的Thunderboard应用程序的源代码-Android application source code
- 网址缩短API登陆页面
- silverstripe-email_reminder:Silverstripe CMS的模块。 在用户的成员资格(或类似权限)即将到期时向用户发送提醒
- nodeschool.io:我对 NodeSchool.io 练习的解决方案
- ASCII-ART:产生与图像相对应的ASCII符号