
计算机等级考试二级C语言程序设计第16章.ppt
29页本章重点16.1 C语言文件的概念 16.2 文件指针 16.3 翻开文件 16.4 关闭文件 16.5 调用getc(fgetc)和putc(fputc)函数进行输入和输出 16.6 判文件结束函数EOF 16.7 fscanf函数和fprintf函数 16.8 fgets函数和fputs函数 16.9 fread函数和fwrite函数 16.10 文件定位函数 第第16章章 文件文件精选ppt16.1 C语言文件的概念 文件是一种保存数据的根本数据结构,在逻辑上可认为文件是记录在外部介质上的数据的集合对文件输入输出方式也称“存取方式C语言中,有两种对文件的存取方式:顺序存取和直接存取精选ppt顺序存取文件的特点是:每当“翻开这类文件进行读或写操作时,总是从文件的开头开始,从头到尾顺序地读写;直接存取文件又称随即存取文件,其特点是:可以通过调用C语言的库函数去指定开始读写的字节号,然后直接对此位置上的数据进行读写操作精选ppt16.2 文件指针文件指针,实际上是指向一个结构体类型的指针变量,这个结构体中包含有:缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是“读还是“写、是否出错、是否已经遇到文件结束标志等信息。
所有一切都在stdio.h头文件中进行了定义,并称此结构体类型名为FILE,可以用此类型名来定义文件指针定义文件指针的一般形式为:FILE *指针变量名 精选ppt在标准头文件stdio.h中,同时预定义了三个非常有用的文件类型指针stdin、stdout、stderr这三个标准文件类型指针通常都连到终端设备stdin 标准输入流指针,通常指键盘stdout 标准输出流指针,通常指显示器屏幕stderr标准出错流指针,通常指显示器屏幕为了对文件进行使用操作,需要把FILE指针作为一个参数传递给每个标准I/O函数精选ppt16.3 翻开文件 1翻开文件fopen函数翻开一个文件调用标准I/O库函数fopen,它使翻开文件与一个流相联,返回一个指向该流的文件类型指针,用于后续的文件操作用法:FILE *fopen(const char*filename,const char*mode);1如翻开成功,那么fopen的返回一个文件类型指针,否那么返回NULL2参数filename指定翻开的文件名3参数mode指定文件翻开方式,具体说明如下:精选ppt对文本文件的翻开方式:r 以只读方式翻开w 以写方式翻开,如果已存在该文件名的文件,文件被重写。
a 附加方式翻开用于在文件末尾写,当文件不存在时,创立新文件用于写r+翻开一个已存在文件用于更新w+创立一个新文件用于更新,如果已存在该文件名的文件,文件被重写a+翻开用于附加,当文件不存在时,创立新文件用于在文件末尾写精选ppt对二进制文件的翻开方式:rb 以只读方式翻开wb 以写方式翻开,如果已存在该文件名的文件,文件被重写ab 附加方式翻开用于在文件末尾写,当文件不存在时,创立新文件用于写rb+翻开一个已存在文件用于更新wb+创立一个新文件用于更新,如果已存在该文件名的文件,文件被重写ab+翻开用于附加,当文件不存在时,创立新文件用于在文件末尾写例如:翻开一个文件精选ppt#include main()FILE*fp;if(fp=fopen(jiaotong,r)=NULL)/*翻开文件,并检查文件指针*/printf(cannt open the file:jiaotong);exit(0);else printf(open the file:jiaotong);fclose(fp);精选ppt该程序的作用是翻开当前目录下的一个名叫:jiaotong的文件,如过存在该文件并被翻开,那么在屏幕上输出一行信息:open the file:jiaotong.;否那么输出:cannt open the file:jiaotong.。
虽然此处用只读方式r去翻开文件,但并未做读取其中内容精选ppt16.4 关闭文件对文件进行读写操作完成之后,应及时关闭该文件关闭一个文件调用标准I/O库函数fclose,它去除与文件相关的流缓冲区此后将不能再通过该指针,对原来与其联系在一起的文件进行操作;除非再次翻开原文件,并让该指针重新指向它函数fclose的用法:int fclose(FILE *stream);参数stream为文件流指针如调用成功,那么fclose的返回0,否那么返回EOF-1例如:关闭一个文件 精选ppt#include main()FILE*fp;if(fp=fopen(abc,r)=NULL)exit(0);if(0=fclose(fp)/*关闭文件,并检查返回值*/printf(close the file:jiaotong);else printf(cannt close the file:jiaotong);精选ppt运行该程该程序前,确认在当前目录下有一个名叫jiaotong的文件,程序先翻开该文件,并立即关闭它,如果文件关闭成功,在屏幕上输出一行信息:close the file:jiaotong.;否那么输出:cannt close the file:jiaotong。
精选ppt16.5 调用getc(fgetc)和putc(fputc)函数进行输入和输出1输入字符函数fgetcfgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);其意义是从翻开的文件fp中读取一个字符并送入ch中精选ppt例如:用fgetc从标准输入终端设备读取一个字符include main()char ch;printf(Enter a character followed by:);ch=fgetc(stdin);printf(The character read is%cn,ch);精选ppt程序的运行情况如下:Enter a character followed by:b 输入字符“aThe character read is b 显示输入字符“a说明:该程序运行时,提示用户输入一个字符,用户从键盘上输入一个字符并回车,函数fgetc将从标准输入设备stdin读取一个字符精选ppt2输出字符函数fputcfputc函数的功能是把一个字符写入指定的文件中,函数调用的 形式为:fputc(字符量,文件指针);其中,待写入的字符量可以是字符常量或变量,例如:fputc(a,fp);其意义是把字符a写入fp所指向的文件中。
例如:用fputc向标准输出终端设备输出一个字符串精选ppt#include#include main()int i;char ch=Hi everybody!;for(i=0;istrlen(ch);i+)fputc(chi,stdout);/*循环输出字符串中的每个字符*/说明:该程序运行时,向标准终端输出设备stdout显示屏输出字符串:“Hi everybody!精选ppt#include#include main()int i;char ch=“Hello everybody!;for(i=0;istrlen(ch);i+)fputc(chi,stdout);/*循环输出字符串中的每个字符*/说明:该程序运行时,向标准终端输出设备stdout显示屏输出字符串:“Hello everybody!精选ppt16.6 判文件结束函数EOF读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾此时如果读数据,将会出现错误为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),其格式如下:格式:int feof(FILE*fp)功能:测试fp指向的文件是否到达文件尾。
假设到达文件尾,返回值为非0,否那么返回值为0精选ppt16.7 fscanf函数和fprintf函数1格式读函数fscanf()格式:int fscanf(FILE *fp,const char*format,address,)功能:根据format中的格式从fp指向的文件中读取数据存入到相应的address指向的变量中2格式写函数fprintf()格式:int fprintf(FILE*fp,const char*frmat,argument,)功能:根据格式字符串frmat把argument列表中的表达式值写到fp所指向的文件中精选ppt16.8 fgets函数和fputs函数1读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:fgets(字符数组名,n,文件指针);其中的n是一个正整数表示从文件中读出的字符串不超过 n1个字符在读入的最后一个字符后加上串结束标志0例如:fgets(str,n,fp);其意义是从fp所指的文件中读出n1个字符送入字符数组str中精选ppt2写字符串函数fputsfputs函数的功能是向指定的文件写入一个字符串,其调用形式为:fputs(字符串,文件指针);其中字符串可以是字符串常量,也可以是字符数组名或指针变量,例如:fputs(abcd,fp);其意义是把字符串“abcd写入fp所指的文件之中。
精选ppt16.9 fread函数和fwrite函数直接I/O又叫二进制I/O,用于整块数据的读写可用来读写一组数据,如一个数组元素,一个结构变量的值等1fread函数fread函数是从输入流中读取一个数据块调用形式:int fread(void*ptr,int size,int n,FILE *stream);精选ppt2fwrite函数fwrite函数用来输出一个数据块到指定流中用法:int fwrite(const void*ptr,int size,int n,FILE *stream);fwrite将n项长度为size字节数据复制到流中,终结空字符不拷贝如果调用成功,那么fputs返回0;出错时,那么返回EOF参数stream为文件流指针精选ppt16.10 文件定位函数实现随机读写的关键是要按要求移动位置指针,这称为文件的定位移动文件内部位置指针的函数主要有两个,即 rewind 函数和fseek函数另外函数ftell用来得到文件指针的当前位置,用相对于文件头的字节位移量表示精选ppt16.10.1 freek函数格式:int fseek(FILE*fp,long offset,int from)功能:移动文件位置指针到指定位置。
说明:1fseek()把文件位置指针移动到与from所指定的文件位置距离offset个字节处,如果指针移动成功,那么返回0,出错时返回非02参数offset为字节偏移量,为长整型数据,正数代表前进,负数代表后退3参数form代表移动的开始位置精选ppt16.10.2 ftell函数格式:long ftell(FILE*fp)功能:得到fp指向的文件的文件位置指针位置说明:ftell()在调用成功后返回当前指针位置,出错时返回1L当翻开一个文件时,通常并不知道该文件的长度,通过以下函数调用可以求出文件的字节数:fseek(fp,0L,SEEK_END);/*把位置指针移到文件末尾*/t=ftell(fp);精选ppt假设二进制文件中存放的是struct st结构体类型数据,那么通过以下语句可以求出该文件中以该结构体为单位的数据块的个数fseek(fp,0L,SEEK_END);t=ftell(fp);n=t/sizeof(struct st);16.10.3 rewind函数格式:void rewind(FILE*fp)功能:将文件位置指针定位于文件的开始头说明:该函数的作用是把文件位置指针返回到文件开始处,去除文件结束标志和出错标志,无返回值。
