C及C++程序设计 第十三章 磁盘文件操作IO系统_第1页
C及C++程序设计 第十三章 磁盘文件操作IO系统_第2页
C及C++程序设计 第十三章 磁盘文件操作IO系统_第3页
C及C++程序设计 第十三章 磁盘文件操作IO系统_第4页
C及C++程序设计 第十三章 磁盘文件操作IO系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十三章磁盘文献操作(I/O系统)第1页13.1文献概述13.2控制台I/O13.3ANSI文献I/O系统第2页13.1.1C文献概念文献(file)是计算机技术中一种主要概念。文献一词我们数次使用。从操作系统角度,与主机相连输入输出设备,也看做是文献。

13.1文献概述第3页13.1.2流概念ANSIC文献系统适用于多种设备,如终端、磁盘和磁带等设备。根据文献存放形式不一样,有两种类型流:文本流和二进制流。1.文本流文本流是一种ASCII码字符序列。根据详细环境需要,也许会有一定字符要进行转换。2.二进制流二进制流是一组字节序列。它与设备之间传递数据存在一一对应关系,即没有任何字符转换。

第4页13.1.3缓冲文献系统和非缓冲文献系统C语言支持两种文献系统:缓冲文献系统和非缓冲文献系统。所谓缓冲文献系统(bufferedfilesystem)是指在进行I/O操作时,系统自动为每个打开文献开辟一种内存缓冲区。

所谓非缓冲文献系统(unbufferedfilesystem)是指系统不自动开辟内存缓冲区,而是由程序自己为每个文献设定缓冲区。第5页13.2控制台I/O13.2.1简单控制台I/O函数1.读写字符表中读写字符四个函数原型如下:intgetche(void);intputhar(int);intgetchar(void);intgetch(void);函数getchar()是函数getche()一种变体。由于它要求输入回车,就有也许在函数返回之后留下字符在输入流中。

第6页2.读写字符串用于控制台读写字符串函数为gets()和puts()。它们原型如下:char*gets(char*);intputs(char*);并且都在头文献stdio.h中说明。gets()函数从键盘读入一种字符串,放到指针参数指定地址中。

puts()函数功能是在屏幕上显示一字符串,后跟一种新行符。第7页13.2.2格式化控制台I/O除了前面所介绍简单控制台I/O函数以外,C标准函数库中尚有两个格式化输入输出函数:printf()和scanf()。

第8页13.2.3标准设备文献及I/O改向当进行输入输出操作时,一般输入设备为键盘,输出设备为显示屏。这是系统要求,称这些设备为标准设备。

标准设备文献改向操作,是在执行顾客程序文献时,用改向操作符实现。有两个改向操作符,它们是:<标准输入文献改向;>标准输出文献改向。第9页13.3ANSI文献I/O系统ANSI文献I/O系统,也称为缓冲文献输入输出系统。它由某些互相关联函数组成。

第10页13.3.1文献构造类型和文献指针首先引入一种新数据类型,即文献构造类型。在ANSI文献I/O系统中,每个被使用文献,都在内存开辟一种区,用于寄存文献有关信息,如文献名、文献状态、文献缓冲区位置以及目前读写位置等。

指向FILE构造指针称为文献指针。文献指针变量定义一般形式为:FILE*文献指针名;第11页13.3.2打开文献和关闭文献文献操作总流程是:打开文献→操作文献→关闭文献。所谓打开文献,就是把一种流同一种文献联系起来,使得能够进行文献输入和输出操作。

第12页1.文献打开函数fopen()打开文献是通过函数fopen()实现。此函数要完成下列两个功能:第一,打开一种流并把它同一种需要打开文献联系起来;第二,返回该文献文献指针。fopen()函数原型如下:FILE*fopen(char*filename,char*mode);

第13页用“r”模式打开文献,只能用于向计算机输入数据(读文献),不能向该文献输出数据(写文献)。此模式要求所要打开文献必须是已经存在,不然在打开时犯错。用“w”模式打开文献只能用于向文献写数据,不能用来向计算机输入数据。

用“a”模式打开文献,能够向文献末尾添加数据。

用“r+”、“w+”和“a+”打开文献,既能够用作写也能够用作读。

第14页2.文献关闭函数fclose()函数fclose()用于关闭用fopen()打开文献。函数fclose()原型为:intfclose(FILE*fp);这里fp是调用fopen()时,它返回文献指针。

第15页13.3.3文献读和写1.函数fgetc()和fputc(函数getc()和putc())函数fgetc()此函数功能是,从指定文献读入一种字符。它原形为:intgetc(File*fp);fp为文献指针。

第16页函数fputc()此函数功能是,向指定文献写一种字符。它原型为:intputc(intch,FILE*fp);其中fp为文献指针,ch为字符变量,其值即为所要写进文献字符。

第17页2.函数feof()、ferror()和rewind()应用(1)函数feof()为了能同步适用于文本文献和二进制文献,可采取二进制模式打开文献。

(2)函数ferror()ferror()函数可用来确定文献操作是否出现了错误。

(3)函数rewind()rewind()函数用于将其参数所批示文献指针,定位到文献开头。

第18页3.函数getw()和putw()函数getw()和putw()分别用于读和写磁盘文献中整数。

第19页4.函数fgets()和fputs()函数fgets()和fputs()分别用于读和写磁盘文献字符串,其原型如下:char*fputs(char*str,FILE*fp);char*fgets(char*str,intlength,FILE*fp);函数fgets()从指定流读一种字符串,直到遇到新行符或读够了length-1个字符。

第20页5.函数fread()和fwrite()函数fread()和函数fwrite()分别用于读和写数据块(一组数据)。它们原型如下:unsignedfread(void*buffer,intnum_bytes,intcount,FILE*fp);unsignedfwrite(void*buffer,intnum_bytes,intcount,FILE*fp);第21页6.函数fprintf()和fscanf()对磁盘文献格式化I/O操作是通过fprintf()和fscanf()两个函数实现。它们同函数printf()和scanf()很相同,只是它们是对磁盘文献操作而不是控制台。函数fprintf()和fscanf()原型为:intfprintf(FILE*fp,char*control_string,...);intfscanf(FILE*fp,char*control_string,...);第22页13.3.4文献定位与文献随机存取1.函数rewind()函数原型如下:voidrewind(FILE*fp)2.函数fseek()函数原型如下:intfseek(FILE*fp,longnumber_bytes,intorigin);第23页3.函数ftell()

在程序运行中,伴随对文献操作,文献位置指针,是经常变动。有时也许不清楚目前指针所指位置。函数ftell()作用是获取文献目前操作(读或写)位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论