- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04--标准IO库
标准I/O库
上章回顾:
系统调用有关I/O操作的函数有哪些?
文件描述符的本质是什么类型?标准输入、输出、错误描述符的宏是什么?STDIN_FILENO
creat函数可以用哪个函数替代?写出来
作业检查:
本章预习
流与FILE、I/O缓冲区、读写定位流、格式化I/O,临时文件,文件描述符与FILE区别
一、概述
1、为什么要学标准I/O库:
标准I/O库是由ISO C标准说明定义,通常简称stdio(stdio.h就是由此而来),它实现了一个跨平台用户缓冲的解决方案,使得该库使用简单、功能强大。与系统I/O相比,它处理很多细节,如缓冲机制的实现,它封装了系统调用函数。标准库可以提高读写效率,下面是影响读写效率的因素:
1)、所有磁盘操作都是基于块进行的。因此,当请求以块大小整数倍对齐地址时,I/O效率最理想;
2)、操作效率随系统调用次数的增多而急剧下降。
3)、如果所读内容跨越块,即使读取字节数不多,效率也不高,因为至少要读两次。
2、应用如何选择哪套函数?
一个程序究竟使用标准I/O合适还是直接使用系统调用更合适,需要设计者权衡利弊。即平衡时间效率与空间效率,才能做出决定。
参考思路为:要求时间效率就调用库;要空间效率就考虑用系统调用;要跨平台提高兼容性则用标准库函数。
二、流和FILE对象
1、基础概念:
1)、什么叫流:在标准库里,把一个打开的文件叫做流(stream)。
2)、系统调用与标准IO库区别:系统调用中的IO函数都是针对文件描述,该描述符与文件对应。
而标准IO库则是围绕着FILE结构体类型的指针进行的,用标准I/O库函数打开或创建流后,该流就与文件相关联。FILE结构体包含了标准I/O库为管理该流所需要的所有信息。如:文件描述符,流缓冲区指针、缓冲区长度、当前缓冲区中的字符数以及出错标志等。
三、标准输入、标准输出、标准出错
1、认识FILE结构体
typedef struct _IO_FILE FILE;
struct _IO_FILE {
int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags
/* The following pointers correspond to the C++ streambuf protocol. */
/* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
char* _IO_read_ptr; /* Current read pointer */
char* _IO_read_end; /* End of get area. */
char* _IO_read_base; /* Start of putback+get area. */
char* _IO_write_base; /* Start of put area. */
char* _IO_write_ptr; /* Current put pointer. */
char* _IO_write_end; /* End of put area. */
char* _IO_buf_base; /* Start of reserve area. */
char* _IO_buf_end; /* End of reserve area. */
/* The following fields are used to support backing up and undo. */
char *_IO_save_base; /* Pointer to start of non-current get area. */
char *_IO_backup_base; /* Pointer to first valid character of backup area */
char *_IO_save_end; /* Pointer to end of non-current get area. */
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno; // 文件描述符
int _flags2;
_IO_off_t _old_offset; /* This used to be _offset but its too small. */
#define __HAVE_COLUMN /* tempora
您可能关注的文档
- 2011年助理电子商务师练习.doc
- 2011年各行业细分龙头股并附投资亮点.doc
- 2011年山东高考文综答案.doc
- 2011年度常州市文化产业引导资金.doc
- 2011年广东高考文科综合答案.doc
- 2011年广东高考文综答案.doc
- 2011年毕业论文.doc
- 2011年时政.ppt
- 2011年注册环保基础考试大纲.doc
- 2011年注册会计师专业阶段考试大纲《经济法》.doc
- 鲁科版高中物理选择性必修第三册精品课件 第3章 热力学定律 分层作业13 热力学第二定律.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第2章 机械振动 分层作业12 科学测量用单摆测量重力加速度.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第2章 机械振动 第4节 科学测量用单摆测量重力加速度——分层作业.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第2章 机械振动 分层作业13 生活中的振动.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第2章 机械振动 第5节 生活中的振动——分层作业.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第5章 光的干涉、衍射和偏振 第1节 光的干涉.ppt
- 鲁科版高中物理选择性必修第三册精品课件 第4章 原子结构 分层作业16 原子的核式结构模型.ppt
- 鲁科版高中物理选择性必修第三册精品课件 第1章 分子动理论与气体实验定律 分层作业4 科学探究气体压强与体积的关系.ppt
- 鲁科版高中物理选择性必修第一册精品课件 第4章 光的折射和全反射 第1节 光的折射 (2).ppt
- 鲁科版高中物理选择性必修第一册精品课件 第4章 光的折射和全反射 第1节 光的折射.ppt
文档评论(0)