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

标准I/O 标准I/O库 流和FILE对象 文件指针 标准I/O操作 标准I/O库 库函数是一些完成常见的特定功能的函数,一般由某 个标准组织制作发丰。并形成一定的标准,库函数一 般可以应用于不同的平台面不需要做任何修改,具有 很好的可移植性。系统调用函数与操作系统直接相关 ,不同的操作系统使用的调用可能不同,因此可移植 性不高。 库函数在实现中也可能需要使用系统调用,但它封装 了系统调用操作。用户不必关心使用了哪些系统调用 。 流和File对象 文件I/O函数都是针对文件描述符的。当打开一个文件 时,即返回一个文件描述符,然后该文件描述符就用 于后续的I/O操作。 而对于标准I/O库,它们的操作则是围绕流进行的。当 用标准I/O库打开或创建一个文件时,我们已使用一个 流与一个文件相关联。 文件流 流是一个抽象的概念,是物质从一处向另一处流动的 过程,多用于程序开发中。 在程序开发中,流是指信息从外部输入设备(如键盘 和磁盘)向计算机内部(即内存)输入或从内存向外 部输出设备(如显示器和磁盘)输出的过程,这种输 入输出过程被形象地比喻为“流”。 文件缓冲区 根据应用程序对文件的访问方式,即是否存在 缓冲区,文件系统分为缓冲区的文件系统 和非缓冲文件系统。 缓冲文件系统:高级文件系统,系统自动为正在使 用的文件开辟内存缓冲区。遵循ANSI 标准的I/O  函数使用的就是缓冲文件系统。 非缓冲文件系统:低级文件系统,由用户在程序中 为每个文件设定缓冲区。POSIX 标准的系统调用 I/O 函数使用的就是非缓冲文件系统 缓冲文件系统 标准的C 库函数建立在底层系统调用之上,即C 函数 库文件访问函数的实现中使用了文件I/O 系统调用。 标准的C 库中的文件处理函数为了减少使用系统调用 的次数,提高效率,根据应用的不同采用缓冲区机制 ,这样,在对磁盘文件进行读操作时,可以一次性地 从文件中读出大量数据到缓冲区中,以后对这部分数 据的访问就不需要再使用系统调用了。在对磁盘文件 进行操作时,可以先将内容存储在文件缓冲区中,待 文件缓冲区满后再用系统调用将该文件一次写入到磁 盘。 根据使用领域的不同需求,标准C 函数使用了全缓冲 、行缓冲和无缓冲3 种缓冲区处理方式。 缓冲文件系统 全缓冲:这种情况下,在填满标准I/O缓冲区后才进行 实行I/O操作。 行缓冲:在这种情况下,当在输入和输出中遇到换行 符时,标准I/O库执行I/O操作。当流涉及一个终端时 ,通常使用行缓冲。 不带缓冲:标准I/O库不对字符进行缓冲存储。 更改缓冲类型 Void setbuf(FILE*fp, char * buf) Intsetvbuf(FILE*fp, char *buf, intmode, size_tsize) 返回值:成功返回0,出错返回非0值 这些函数一定要在流已被打开后调用,而且也应该在 对流执行任何其他操作之前调用。 文件指针 流是操作系统抽象出来的概念,其实体由操作系统维 护和管理,应用层开发只需使用流即可实现对文件的 访问。在应用层面,对文件流的访问通过文件指针 FILE 来实现 系统启动时默认打开了3 个文件,即至少拥有了3 个 流:标准输入、标准输出和标准出 错,这3 个流在缺省的情况下可被任意进程使用。在 标准I /O 流中通过预定义FILE 类型的 文件指针stdin、stdout和stderr来分别引用标准输入 、标准输出和标准出错 File结构体

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档