C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章 文件I/O

上传人:E**** 文档编号:89386703 上传时间:2019-05-24 格式:PPT 页数:12 大小:1.75MB
返回 下载 相关 举报
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章  文件I/O_第1页
第1页 / 共12页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章  文件I/O_第2页
第2页 / 共12页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章  文件I/O_第3页
第3页 / 共12页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章  文件I/O_第4页
第4页 / 共12页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章  文件I/O_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章 文件I/O》由会员分享,可在线阅读,更多相关《C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第12章 文件I/O(12页珍藏版)》请在金锄头文库上搜索。

1、第12章 文件IO,文件是指在外部存储介质上静态存放的信息集合。文件在需要处理的时候要读到内存,处理以后一般又要写回到外部存储介质上长期保留。 1 文件操作实例 2 文件的打开与关闭 3 文件的读写操作 4 位置指针与文件定位,任务1:将键盘上输入的一字符串,以ASCII码形式存储到一个磁盘文件中。 #include “stdio.h“ main() FILE *fp; char ch; if(fp=fopen(“file1.txt”, “w“)=NULL) printf(“cannot open filen“); exit(0); ch=getchar( ); /*接收输入的第一个字符*/

2、while(ch!=n) fputc(ch,fp); ch=getchar( ); fclose(fp); ,文件操作实例,对文件进行操作之前,必须先打开该文件;使用结束后,应立即关闭,以免数据丢失。 语言规定了标准输入输出函数库,用fopen()函数打开一个文件,用fclose()函数关闭一个文件。 1.文件类型FILE 系统给每个打开的文件都在内存中开辟一个区域,用于存放文件的有关信息(如文件名、文件位置等)。这些信息保存在一个结构类型变量中,该结构类型由系统定义、取名为FILE。 2.文件的打开fopen()函数 用法: FILE *fopen(“文件名“,“操作方式“); 功能:返回一

3、个指向指定文件的指针。 注:对文件操作的库函数,函数原型均在头文件stdio.h中。后续函数不再赘述。 (1)“文件名”是指要打开(或创建)的文件名。如果使用字符数组(或字符指针),则不使用双引号。,文件的打开与关闭,(2)“操作方式”如表所示。 例如,FILE *fp; fpfopen(“data.99“,“r“); 3说明 如果不能实现打开指定文件的操作,则fopen()函数返回一个空指针NULL (其值在头文件stdio.h中被定义为)。 文件的关闭fcolse()函数 用法: int fclose(FILE *文件指针); 功能:关闭“文件指针”所指向的文件。如果正常关闭了文件,则函数

4、返回值为;否则,返回值为非。 例如,fclose(fp);/*关闭fp所指向的文件*/,1.将一个字符写到文件中fputc()函数 用法:int fputc(字符数据,文件指针); 其中“字符数据”,既可以是字符常量,也可以是字符变量。 功能:将字符数据输出到“文件指针”所指向的文件中去,同时将读写位置指针向前移动1个字节(即指向下一个写入位置)。 如果输出成功,则函数返回值就是输出的字符数据;否则,返回一个符号常量EOF(其值在头文件stdio.h中,被定义为-1)。 2从文件中读入一个字符fgetc()函数 任务2 顺序显示任务1创建的磁盘ASCII码文件。 #include “stdio

5、.h“ main(int argc, char *argv) FILE *fp; char ch; if (fp=fopen(“file1.txt”,“r“)=NULL) printf(“can not open source filen“); exit(0); for(; (ch=fgetc(fp)!=EOF; ) putchar(ch); /*顺序读入并显示*/ fclose(fp); /*关闭打开的文件*/ ,读写文件中的一个字符,(1)库函数fgetc() 用法:int fgetc(文件指针); 功能:从“文件指针”所指向的文件中,读入一个字符,同时将读写位置指针向前移动1个字节(即指

6、向下一个字符)。该函数无出错返回值。 例如,fgetc(fp)表达式,从文件fp中读一个字符,同时将fp的读写位置指针向前移动到下一个字符。 (2)关于符号常量EOF 在对ASCII码文件执行读入操作时,如果遇到文件尾,则读操作函数返回一个文件结束标志EOF(其值在头文件stdio.h中被定义为-1)。 在对二进制文件执行读入操作时,必须使用库函数feof()来判断是否遇到文件尾。,读写文件中的一个字符,任务3实现制作ASCII码文件副本的功能。 #include “stdio.h“ main(int argc, char *argv) FILE *input, *output; char c

7、h; if(argc!=3) /*参数个数不对*/ printf(“n Usage: 可执行文件名 source-file dest-file“); exit(0); if (fp=fopen(argv1,“r“)=NULL) /*打开源文件失败*/ printf(“can not open source filen“); exit(0); if (fp=fopen(argv2,“w“)=NULL) /*创建目标文件失败*/ printf(“can not create destination filen“); exit(0); for( ; (!feof(input) ; ) fputc(f

8、getc(input),output); fclose(input); fclose(output); ,读写文件中的一个字符,实际应用中,常常要求1次读写1个数据块。为此,ANSI C 标准设置了 fread( ) 和fwrite()函数。 用法: int fread(void *buffer, int size, int count, FILE *fp); int fwrite(void *buffer, int size, int count, FILE *fp); 功能: fread()从fp所指向文件的当前位置开始,一次读入size个字节,重复count次,并将读入的数据存放到从bu

9、ffer开始的内存中;同时,将读写位置指针向前移动size* count个字节。 其中,buffer是存放读入数据的起始地址(即存放何处)。 fwrite()从buffer开始,一次输出size个字节,重复count次, 并将输出的数据存放到fp所指向的文件中;同时,将读写位置指针向前移动size* count个字节。 其中,buffer是要输出数据在内存中的起始地址(即从何处开始输出)。 如果调用fread()或fwrite()成功,则函数返回值等于count。 fread()和fwrite()函数,一般用于二进制文件的处理。,读写一个数据块fread()和fwrite(),与scanf()

10、和printf()函数的功能相似,区别在于:fscanf()和fprintf()函数的操作对象是指定文件,而scanf()和printf()函数的操作对象是标准输入(stdin)输出(stdout)文件。 int fscanf(文件指针,“格式符“,输入变量首地址表); int fprintf(文件指针,“格式符“,输出参量表); 例如, int i=3; float f=9.80; fprintf(fp,“%2d,%6.2f“, i, f); ,文本文件读写fscanf()和fprintf()函数,从功能角度来说,fread()和fwrite()函数可以完成文件的任何数据读写操作。 但为方便

11、起见,依下列原则选用: 1读/写1个字符(或字节)数据时:选用fgetc()和fputc()函数。 2读/写1个字符串时:选用fgets()和fputs()函数。 3读/写1个(或多个)二进制数据块时:选用fread()和fwrite()函数。 4读/写文本文件时:选用fscanf()和fprintf()函数。,读写函数的选用原则,文件中有一个读写位置指针,指向当前的读写位置。每次读写1个(或1组)数据后,系统自动将位置指针移动到下一个读写位置上。 如果想改变系统这种读写规律,可使用有关文件定位的函数。 1 随机读写与fseek()函数 对于流式文件,既可以顺序读写,也可随机读写,关键在于控制

12、文件的位置指针。 所谓顺序读写是指,读写完当前数据后,系统自动将文件的位置指针移动到下一个读写位置上。 所谓随机读写是指,读写完当前数据后,可通过调用fseek()函数,将位置指针移动到文件中任何一个地方。 用法:int fseek(文件指针,位移量,参照点); 功能:将指定文件的位置指针,从参照点开始,移动指定的字节数。 (1)参照点:用0(文件头)、1(当前位置)和(文件尾)表示。 在ANSI C标准中,还规定了下面的名字: SEEK_SET文件头, SEEK_CUR当前位置, SEEK_END文件尾 (2)位移量:以参照点为起点,向前(当位移量时)或后(当位移量时)移动的字节数。在ANSI C标准中,要求位移量为long int型数据。 fseek()函数一般用于二进制文件。,位置指针与文件定位,2.返回文件当前位置的函数ftell() 由于文件的位置指针可以任意移动,也经常移动,往往容易迷失当前位置,ftell()就可以解决这个问题。 用法:long ftell(文件指针); 功能:返回文件位置指针的当前位置(用相对于文件头的位移量表示)。 如果返回值为-1L,则表明调用出错。例如: offset=ftell(fp); if(offset= =-1L)printf(“ftell() errorn”);,位置指针与文件定位,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号