《第11章_文件课件.ppt》由会员分享,可在线阅读,更多相关《第11章_文件课件.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第11章_文件ppt课件(全)第第11章章 文文 件件第11章_文件ppt课件(全)第第11章章文文件件11.1文件的基本概念文件的基本概念11.2文件的打开与关闭文件的打开与关闭11.3文件的读写文件的读写11.4文件的随机读写文件的随机读写第11章_文件ppt课件(全)11.1文件的基本概念文件的基本概念C语言把文件看作是语言把文件看作是字符(字节)的序列字符(字节)的序列,即由一个一个,即由一个一个的字符(字节)的数据顺序组成。的字符(字节)的数据顺序组成。文件分为文件分为文本(文本(text)文件)文件和和二进制文件二进制文件。文本文件又称。文本文件又称ASCII文件,它的每个字节存放
2、一个文件,它的每个字节存放一个ASCII代码,代表一代码,代表一个字符。个字符。如果把整数如果把整数10000保存在二进制文件中,则存放的是保存在二进制文件中,则存放的是2个字个字节的数据(二进制形式)。节的数据(二进制形式)。对于文本文件,它将对于文本文件,它将10000看作由看作由5个字符组成的字符序列,个字符组成的字符序列,分别存放字符分别存放字符1、0、0、0、0的的ASCII代码,代码,占占5个字节。个字节。第11章_文件ppt课件(全)11.2文件的打开与关闭文件的打开与关闭11.2.1文件类型指针文件类型指针FILE*fp;11.2.2 11.2.2 文件的打开文件的打开函数原型
3、:函数原型:FILEFILE * * fopen(char fopen(char * *filename, char filename, char * *mode)mode); ;调用格式:调用格式:fp=fopen(文件名,使用文件方式文件名,使用文件方式);例如:例如:fp=fopen(“a1”,“r”);第11章_文件ppt课件(全)文件使用方式文件使用方式含含义义“r”(只读)(只读)为输入打开一个已有的文本文件为输入打开一个已有的文本文件“w”(只写)(只写)为输出打开一个新的文本文件,若已存在,则覆盖为输出打开一个新的文本文件,若已存在,则覆盖它它“a”(追加)(追加)向文本文件尾
4、添加数据向文本文件尾添加数据“rb”(只读)(只读)为输入打开一个已有的二进制文件为输入打开一个已有的二进制文件“wb”(只写)(只写)为输出打开一个二进制文件,若已存在,则覆盖它为输出打开一个二进制文件,若已存在,则覆盖它“ab”(追加)(追加)向二进制文件尾添加数据向二进制文件尾添加数据“r+”(读写)(读写)为读为读/写打开一个已有的文本文件写打开一个已有的文本文件“w+”(读写)(读写)为读为读/写建立一个新的文本文件,若已存在,则覆盖写建立一个新的文本文件,若已存在,则覆盖它它“a+”(读写)(读写)为读为读/写打开一个文本文件,数据追加到末尾写打开一个文本文件,数据追加到末尾“rb
5、+”(读写)(读写)为读为读/写打开一个已有的二进制文件写打开一个已有的二进制文件“wb+”(读写)(读写)为读为读/写建立一个新的二进制文件写建立一个新的二进制文件“ab+”(读写)(读写)为读为读/写打开一个二进制文件写打开一个二进制文件第11章_文件ppt课件(全)11.2.3文件的关闭文件的关闭函数原型:函数原型:intfclose(FILE*fp);调用格式:调用格式:fclose(文件指针文件指针);例如:例如:fclose(fp);第11章_文件ppt课件(全)11.3文件的读写文件的读写字符读写函数字符读写函数:fgetc和和fputc字符串读写函数:字符串读写函数:fgets
6、和和fputs数据块读写函数:数据块读写函数:freed和和fwrite格式化读写函数:格式化读写函数:fscanf和和fprintf 头文件头文件stdio.h第11章_文件ppt课件(全)11.3.1字符读写函数字符读写函数fgetc和和fputc1.字符读函数字符读函数fgetc函数原型:函数原型:intfgetc(FILE*fp);调用格式:调用格式:字符变量字符变量=fgetc(文件指针文件指针);例如:例如:ch=fgetc(fp);第11章_文件ppt课件(全)2.字符输出函数字符输出函数fputc函数原型:函数原型:intfputc(charch,FILE*fp);调用格式:调
7、用格式:fputc(字符,文件指针字符,文件指针)例如:例如:fputc(a,fp);第11章_文件ppt课件(全)3.文件结束检测函数文件结束检测函数feof函数原型:函数原型:intfeof(FILE*fp);调用格式:调用格式:feof(文件指针文件指针);4位置指针复位函数位置指针复位函数rewind函数原型:函数原型:voidrewind(FILE*fp);调用格式:调用格式:rewind(文件指针文件指针);第11章_文件ppt课件(全)【例【例11.1】从键盘输入一行字符,写入一个文件,再】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。把该文件内容读出显示在屏
8、幕上。#include#includevoid main()void main() FILE *fp; FILE *fp; char ch; char ch; if(fp=fopen(d:tcexamplestr.txt,w+)=NULL) if(fp=fopen(d:tcexamplestr.txt,w+)=NULL) printf(Cannot open file strike any key exit!); printf(Cannot open file strike any key exit!); getch(); exit(1); getch(); exit(1); printf(I
9、nput a string:n); printf(Input a string:n); ch=getchar(); ch=getchar(); while (ch!=n) while (ch!=n) fputc(ch,fp); fputc(ch,fp); ch=getchar(); ch=getchar(); rewind(fp);rewind(fp); ch=fgetc(fp); ch=fgetc(fp); while(!feof(fp) while(!feof(fp) putchar(ch); putchar(ch); ch=fgetc(fp); ch=fgetc(fp);第11章_文件p
10、pt课件(全)11.3.2字符串读写函数字符串读写函数fgets和和fputs1.字符串输入函数字符串输入函数fgets函数原型:函数原型:char*fgets(char*str,intn,FILE*fp);fgets(str,n,fp);2.字符串输出函数字符串输出函数fputs函数原型:函数原型:intfputs(char*str,FILE*fp);例如:例如:fputs(“abcd”,fp);第11章_文件ppt课件(全)【例【例11.2】用字符串读写函数】用字符串读写函数fgets和和fputs改写例改写例10.1中中的程序。的程序。includevoidmain()FILE*fp;c
11、hars181,s281;chars181,s281;if(fp=fopen(d:tcexamplestr.txt,w+)=NULL)printf(Cannotopenfilestrikeanykeyexit!);getch();exit(1);printf(Inputastring:n);gets(s1);fputs(s1,fp);rewind(fp);fgets(s2,81,fp);puts(s2);fclose(fp);第11章_文件ppt课件(全)11.3.3数据块读写函数数据块读写函数fread和和fwrite1输入数据块函数输入数据块函数fread函数原型:函数原型:intfrea
12、d(char*pt,unsignedsize,unsignedn,FILE*fp);调用格式:调用格式:fread(buffer,size,count,fp);例如:例如:fread(fa,4,5,fp);第11章_文件ppt课件(全) 2输出数据块函数输出数据块函数fwrite函数原型:函数原型:intfwrite(char*ptr,unsignedsize,unsignedn,FILE*fp);调用格式:调用格式:fwrite(buffer,size,count,fp);第11章_文件ppt课件(全)【例【例11.3】从键盘输入两个学生数据,写入一个文】从键盘输入两个学生数据,写入一个文件
13、中,再读出这两个学生的数据,显示在屏幕上。件中,再读出这两个学生的数据,显示在屏幕上。#includestructstucharname15;intscore;s12,s22,*p1,*p2;voidmain()FILE*fp;inti;p1=s1;p2=s2;fp=fopen(stu_list,wb+);printf(nInputdata:n);for(i=0;iname,&p1-score);p1=s1;fwrite(p1,sizeof(structstu),2,fp); rewind(fp);fread(p2,sizeof(structstu),2,fp);printf(nnamesco
14、ren);for(i=0;iname,p2-score);fclose(fp);运行情况如下:运行情况如下:Inputdata:liu_ming82 wang_li91 namescoreliu_ming82wang_li91第11章_文件ppt课件(全)11.3.4格式化读写函数格式化读写函数fscanf和和fprintf1格式化输入函数格式化输入函数fscanf函数原型:函数原型:intfscanf(FILE*fp,char*format,args);调用格式:调用格式:fscanf(文件指针文件指针,格式字符串格式字符串,地址列表地址列表);例如:例如:fscanf(fp,%d%s,&i
15、,s);第11章_文件ppt课件(全)2格式化输出函数格式化输出函数fprintf函数原型:函数原型:intfprintf(FILE*fp,char*format,args);调用格式:调用格式:fprintf(文件指针文件指针,格式字符串格式字符串,输出表列输出表列);例如:例如:fprintf(fp,%d%c,j,ch);第11章_文件ppt课件(全)【例【例11.4】用函数】用函数fscanf和和fprintf修改例修改例11.3中的程序。中的程序。略略第11章_文件ppt课件(全)10.4文件的随机读写文件的随机读写10.4.1文件定位文件定位函数原型:函数原型:intfseek(FI
16、LE*fp,longoffset,intbase);调用格式:调用格式:fseek(文件指针文件指针,位移量位移量,起始点起始点);起始点起始点标识符标识符数字数字文件头文件头SEEK_SET0当前位置当前位置SEEK_CUR1文件尾文件尾SEEK_END2下面是下面是fseek函数调用的几个例子:函数调用的几个例子:fseek(fp,100L,0);将位置指针移到离文件头将位置指针移到离文件头100个字节处。个字节处。fseek(fp,50L,1);将位置指针移到离当前位置将位置指针移到离当前位置50个字节处。个字节处。fseek(fp,-10L,2);将位置指针移到离文件尾将位置指针移到离
17、文件尾10个字节处。个字节处。第11章_文件ppt课件(全)11.4.2文件的随机读写文件的随机读写【例【例11.5】将例】将例11.3所建立的学生文件所建立的学生文件stu_list中的第二个学生中的第二个学生的数据读出。的数据读出。#includestruct stu char name15; int score;st;void main() FILE *fp; if(fp=fopen(stu_list,rb)=NULL) printf(Cannot open file strike any key exit!); getch(); exit(1); fseek(fp,sizeof(struct stu),0); fread(&st,sizeof(struct stu),1,fp); printf(n name scoren); printf(%-15s %dn,st.name,st.score); fclose(fp);程序运行结果:程序运行结果:namescorewang_li91
限制150内