- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
io讲义
标准I/O库 参考资料:Kernighan Dennis M. Ritchie《C语言程序设计》第八章 Unix系统界面Stevens《Unix环境高级编程》第三章 文件I/O第四章 文件和目录第五章 标准I/O库课程目标:了解文件的基本概念掌握文件的常见操作fopen/fclosefgets/fputsfgetc/fputcfwrite/文件概念:定义: 文件:一组相关数据的有序集合。 文件名:这个数据集合的名称。按类型分类:常规文件ASCII码文件二进制的文件目录字符设备块设备有名管道套接口符号连接标准I/O - 介绍不仅在UNIX系统,在很多操作系统上都实现了标准I/O库标准I/O库由ANSI C标准说明标准I/O库处理很多细节,如缓存分配、以优化长度执行I/O等,这样使用户不必关心如何选择合适的块长度标准I/O在系统调用函数基础上构造的,它便于用户使用标准I/O库及其头文件stdio.h为底层I/O系统调用提供了一个通用的接口。标准I/O - 流和FILE对象文件指针FILE指针:每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息,这些信息是保存在一个结构体类型的变量中,该结构体类型是由系统定义的,取名为FILE。标准I/O库的所有操作都是围绕流(stream)来进行的,在标准I/O中,流用FILE *来描述。标准I/O库是由Dennis Ritchie在1975年左右编写的流(stream)定义:所有的I/O操作仅是简单的从程序移进或者移出,这种字节流,就称为流。分类:文本流/二进制流。 标准I/O - 流和FILE对象文本流定义:在流中处理的数据是以字符出现。在文本流中,’\n’被转换成回车符 CR和换行符LF的ASCII码0DH和0AH。而当输出时,0DH和0AH被转 换成’\n’数字2001在文本流中的表示方法为 ‘2’ ‘0’ ‘0’ ‘1’ ASCII: 50 48 48 49二进制流定义:流中处理的是二进制序列。若流中有字符,则用一个字节的二进制 ASCII码表示;若是数字,则用对应的二进制数表示。对’\n’不进行变换数字2001在二进制流中的表示方法为 标准I/O - 文件缓冲缓冲文件系统(高级磁盘IO)目的:尽量减少使用read/write的调用定义:系统自动的在内存中为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存缓冲区,装满缓冲区在一起送到磁盘中去。从磁盘中读数据,则一次从磁盘文件将一批数据读入到内存缓冲区中,然后再从缓冲区逐个的将数据送到程序的数据区。分类:全缓存,行缓存,不缓存。非缓冲文件系统 (低级磁盘IO)定义:依靠于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出。标准I/O - 缓存分类标准I/O提供了三种类型的缓存全缓存当填满I/O缓存后才进行实际I/O操作,或者满足一定条件后,系统通过调用malloc来获得所需要的缓冲区域,默认值。刷新(fflush):标准I/O的写操作。当缓冲区满了,或者满足一定的条件后,就会执行刷新操作。行缓存当在输入和输出中遇到新行符(‘\n’)时,进行I/O操作。当流遇到一个终端时,典型的行缓存。不带缓存标准I/O库不对字符进行缓冲,例如stderr。很多的人机交互界面要求不可全缓存。标准出错决不会是全缓存的。使用setbuf()和setvbuf()可以更改缓存的类型在任何时刻,可以使用fflush强制刷新一个数据流标准I/O – fflush()定义: #include stdio.h int fflush(FILE *fp);说明:可强制刷新一个流。此函数使该流所有未写的数据都被传递至内核。标准I/O - stdin,stdout,stderr标准I/O预定义3个流,他们可以自动地为进程所使用标准输入0STDIN_FILENOstdin标准输出1STDOUT_FILENOstdout标准错误输出2STDERR_FILENO标准I/O - stdin,stdout,stderr实验:编写程序向标准输出输出”STDOU:Hello World!”编写程序向错误输出输出”ERROR:Hello World!”控制标准的输出错误输出,使程序仅输出标准输出字符。控制标准的输出错误输出,使程序仅输出错误输出字符。提示:fprintf();./a.out 1 /dev/null./a.out 2/dev/标准I/O库 - FILE指针结构FILE在头文件/usr/include/libio.h中定义struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is
您可能关注的文档
最近下载
- 2025年新大象版三年级上册科学全册精编知识点(新编辑).pdf
- 学科建设的要素及原则.pdf VIP
- LEHY-Pro电梯维保初级讲师培训20210628.pptx VIP
- 硼中子俘获治疗技术及应用.pptx VIP
- 电商法律风险防范与规避培训.pptx VIP
- 中国中医药“十三五”规划教材 内经原文背诵.pdf VIP
- 《城镇污水处理厂尾水湿地运行与维护技术规程》(DB32/T 4788-2024).pdf VIP
- 迈瑞病人数据共享协议开发指南.pdf VIP
- 专题 10习作训练 部编版三年级语文下册期中专项复习含答案.docx VIP
- T/CABCI 002-2018_全谷物焙烤食品.pdf VIP
原创力文档


文档评论(0)