第10章-标准输入输出库.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章-标准输入输出库

第十章 标准输入输出库 关于标准I/O库 主要内容 标准I/O的基本概念 流 缓存 标准输入、标准输出及标准错误输出 使用标准I/O进行文件操作 流文件的开关方式 单字符方式读写 行方式读写 二进制方式读写 格式化输入/输出 引入 Linux系统下的文件操作有两种方式: 直接调用文件操作的系统调用(API方式) 标准输入输出方式(标准I/O) 流 使用标准I/O库访问文件时,需要首先打开文件。 打开文件成功后,系统内核将返回流(stream)数据结构。 所有对该文件的后续操作都将针对这个数据结构进行。 实际上流结构是一个指向FILE结构的指针。 缓存 标准输入输出方式(标准I/O)与直接调用文件操作的系统调用(API方式)的区别: 标准I/O带缓存 文件操作无缓存 缓存的含义:在对文件进行I/O操作时,对数据的读写并不直接对文件系统,而是对缓存进行。当缓存空间满时,由系统根据缓存内容刷新到文件系统。 优点:降低调用文件操作的频率。 缓存 标准I/O库提供的缓存方式有3种: 全缓存(缓存填满,则向文件系统刷新) 行缓存(遇换行符,则向文件系统刷新) 不缓存 缓存在第一次调用I/O库时,由系统自动调用malloc分配。 缓存举例 例:分别向标准输出(stdout)和标准错误(stderr)输出信息,比较行缓存和不缓存的区别。 缓存举例 分析:标准输出采用行缓存,由于未输出换行符,所以本条消息不会立即显示;标准错误输出是不缓存的,所以立刻输出。 标准I/O库提供改变缓存方式的函数: Setbuf() Setbuffer() Setlinebuf() 以上函数的声明位于头文件stdio.h中 改变流的缓存方式 #include stdio.h void setbuf(FILE *stream,char *buf) void setbuffer(FILE *stream,char *buf,size _t size) void setlinebuf(FILE *stream) setbuf函数:设置某个流对象的缓存区为BUFSIZ。buf若为NULL,则表示设置流为无缓冲模式。 setlinebuf函数:设置某个流对象为行缓存模式。 setbuffer函数:设置某个流对象的缓存区为指定值。 参数说明: stream:流对象 buf:自定义缓存区指针 size:缓存区大小 缓存举例 例:分别向标准输出(stdout)和标准错误(stderr)输出信息,比较行缓存和不缓存的区别。 缓存举例 结果分析:调用setbuf关闭缓存,使标准输出成为无缓存模式。 标准输入、标准输出和标准错误输出 对每一个进程来说,系统默认为其打开3个流: 标准输入 标准输出 标准错误输出 分别用宏定义表示(stdin,stdout,stderr) 输入输出重定向举例 例:编程实现标准输出的重定向。 上例说明: void perror(const char *s); 函数说明:perror( ) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。 函数名: dup2 功能: 复制文件句柄 用法: int dup2(int oldhandle,int newhandle); 主要内容 标准I/O的基本概念 流 缓存 标准输入、标准输出及标准错误输出 使用标准I/O进行文件操作 流文件的开关方式 单字符方式读写 行方式读写 二进制方式读写 格式化输入/输出 使用标准I/O进行文件操作 要对一个流进行操作,必先打开该流,然后调用标准I/O函数进行读写。 打开关闭流文件 fopen函数(用前需打开) 类似与底层的open系统调用。主要用于文件的输入输出 打开关闭流文件 mode参数: “r” : 以只读方式打开,该文件必须存在。 “r+”:以可读写方式打开,该文件必须存在。 “rb+”:读写打开一个二进制文件。 “w” :以只写方式打开,文件长度截短为零,不存在可建立。 “w+”:以读写方式打开,文件清零,不存在可建立。 “wb”:只写打开或建立一个二进制文件。 “wb+”:读写打开或建立一个二进制文件。 “a”:以追加只写方式打开文件,不存在可建立。 “a+”:以追加可读写方式打开文件,不存在可建立。 打开关闭流文件 fclose函数(用后需关闭) 关闭指定的文件流stream,使所有尚未写出的数据都写出。 打开关闭流文件 fopen与fclose例程 单字符方式读写 标准I/O库提供多种读写方式: 单字符方式读写 行方式读写 二进制方式读写 单字符读写函数有以下6种:

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档