- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11章流与文件
第11章 流与文件 文件的概念 流与缓冲 用户自定义流 I/O文本流和I/O二进制流 11.1 文件的基本概念 文件是存储在磁盘等外部介质上的一个信息系列的集合。通常意义上的文件指的就是磁盘文件。文件是操作系统数据管理的单位,操作系统给每个磁盘文件一个单独的名称,这个名称就叫文件名。文件名是文件的标识符。操作系统根据文件名来对其进行控制和管理,程序员对文件的处理也是通过文件名来实现。 从文件的存储介质角度可将文件分为磁盘文件和设备文件两种。 存储在外部介质上的文件称为磁盘文件。 与主机相连的各种外部设备称为设备文件,如显示器、打印机、键盘等。在操作系统中,把外部设备也看作是一个文件来进行管理,对它们的输入和输出等同于对磁盘文件的读和写。但它们是特殊的“文件”,故往往被赋于固定的“文件名”。以便按“名”完成指定的输入/输出任务。 11.1 文件的基本概念 通常把显示器定义为标准输出文件。一般情况下在屏幕上显示有关信息就是向标准输出文件输出。C语言I/O系统中的库函数实现文件的输出操作,如printf()、putchar()就是向标准文件输出。 键盘通常被指定为标准输入文件。从键盘上输入就意味着从标准输入文件上输入数据,库函数scanf()、getchar()就属于这类输入。 按文件中数据的存储形式可将文件分为文本文件和二进制文件。 以字符形式存储数据的文件称为文本文件。每个字符通过相应的编码存储在文件中。常用编码是ASCII码。一个字符有一个ASCII代码,占用一个字节的存储空间。 以二进制形式存储数据的文件称为二进制文件,它是按照数据在内存中的存储形式原样存储数据的。 从高级语言的角度来看文件中包含的内容可以分为程序文件和数据文件。 11.2 流与缓冲 C语言的I/O系统在程序员和被使用的设备之间提供了一层抽象的概念,这个抽象的概念就是“流”。具体的设备就是“文件”。 11.2.1 流:输入流和输出流 输入流:数据从文件流向程序,流的源头是文件,数据流动的目的地是程序。 输出流:数据从程序流向文件,流的的源头是程序,数据流动的目的地是文件。 11.2.2 流的格式:文本流和二进制流 文本流是一种字符序列,通常是一行行的字符,换行符表示一行的结束。 C语言中常常使用ASCII字符序列。如要将整数1234用文本流写入到数据文件中,则1234将被转换为1、2、3、4的字符序列,其二进制编码0011001000110100,序列中每一个二进制编码为该字符对应的ASCII值。 二进制流是一种字节序列,它与外设中的字节序列是一一对应的。使用中没有字节翻译过程,而且写出或者读入的字节总数与外设中的字节总数相等。 如果将整数1234用二进制流的格式写入到数据文件中,则1234将转换为这个整数的原码形11010010。 从流的概念来看,C语言中的文件为流式文件,即把文件看作是一个有序的字节流(字符流或二进制流)。输入/输出字节流的开始和结束由程序控制而不受物理符号(如回车符)的控制。因此,在C语言中,对数据的存取是以字节为单位的。 11.2 流与缓冲 11.2.3 缓冲区 文件通常驻留在外部介质上,在使用时才被调入到内存中。 有了文件与流的概念,理论上解决了程序与外设交换数据的问题。但由于外设传输数据较慢,而内存的数据处理速度要快得多,故不能直接进行所需的数据交换。 C标准库中采用了“缓冲型文件系统”处理文件,即在内存中开辟一块区域,称为“数据缓冲区”,以便慢速的外设与缓冲区成块地进行数据交换。 当程序要从外设中读取数据时,系统先读入一定数量的数据到缓冲区,然后程序对缓冲区中的数据进行处理。当程序要写数据到外设中时,同样先把数据写入到缓冲区,等待缓冲区满了后,再存入到外设中。 程序执行过程中对文件的操作,是通过缓冲区读写文件的。缓冲区与外设间数据的成块交换是自动执行的,不需人工干预, 11.2 流与缓冲 11.2.4 标准流 C语言在stdio.h文件中定义了3个标准流:stdin、stdout和stderr;默认连接到标准输入文件键盘和标准输出文件显示器。 标准输入流stdin。程序只要调用C语言I/O系统的scanf()、getchar()或gets()等输入函数都会使用stdin。默认连接的外设是键盘,也可以重定向到从文件输入数据。 标准输出流stdout。程序只要调用C语言I/O系统printf()、putchar()或puts()等输出函数都会使用stdout。默认连接的外设是显示器,也可以重定向到文件输出数据。 标准错误流stderr 。操作系统用stderr来显示错误信息。标准错误流对应显示器。 11.3 用户自定义流 11.3.1
文档评论(0)