C语言大学教程C语言第11章.ppt
《C语言大学教程C语言第11章.ppt》由会员分享,可在线阅读,更多相关《C语言大学教程C语言第11章.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言大学教程语言大学教程课件(第课件(第11章)章)教材编著:教材编著:Paul Deitel (美国)(美国)Harvey Deitel(美国)(美国)翻翻 译:苏小红等译:苏小红等 (哈尔滨工业大学)(哈尔滨工业大学)课件制作:杨晓东课件制作:杨晓东 (郑州大学)(郑州大学)授课教师:杨晓东授课教师:杨晓东第第11章章 文件处理文件处理本章主要内容本章主要内容o文件的基本操作方法文件的基本操作方法o顺序存取文件的使用顺序存取文件的使用o随机存取文件的使用随机存取文件的使用第第11章章 文件处理文件处理11.1 引言引言o将数据存储在变量或者数组中,都只能是暂将数据存储在变量或者数组中,都
2、只能是暂时的时的n程序运行结束时,这些数据就会丢失程序运行结束时,这些数据就会丢失o文件是用来永久存储数据的。文件是用来永久存储数据的。n文件可长久储存在硬盘、文件可长久储存在硬盘、U盘、光盘等存储器上。盘、光盘等存储器上。第第11章章 文件处理文件处理11.2 数据的层次结构数据的层次结构o位位:最简单的数据项:最简单的数据项,用,用0和和1表示表示o字符字符:8位二进制数。包括数字、字母等位二进制数。包括数字、字母等o域域:由一组表示特定意义的字符构成。:由一组表示特定意义的字符构成。o记录记录:由一组相关的域构成。:由一组相关的域构成。n记录键记录键:用于识别一个记录的某个域:用于识别一
3、个记录的某个域o文件文件:由若干个记录构成。由若干个记录构成。o数据库数据库:一组相关的文件可以构成数据库:一组相关的文件可以构成数据库第第11章章 文件处理文件处理11.2 数据的层次结构数据的层次结构第第11章章 文件处理文件处理11.3 文件与流文件与流o文件与字符流相对应文件与字符流相对应n标准输入流标准输入流:stdinn标准输出流标准输出流:stdoutn标准错误流标准错误流:stderro每次打开文件都会返回一个指向每次打开文件都会返回一个指向FILE结构结构体的指针体的指针nFILE结构体结构体:文件描述头,即打开文件列表。:文件描述头,即打开文件列表。第第11章章 文件处理文
4、件处理11.3 文件与流文件与流o支持文件读、写的函数支持文件读、写的函数nfgetc:从文件读入一个字符从文件读入一个字符oint fgetc(FILE*stream);nfputc:向文件写入一个字符向文件写入一个字符oint fputc(char ch,FILE*stream);nfgets:从文件读入一行字符从文件读入一行字符ochar*fgets(char*s,int n,FILE*stream);第第11章章 文件处理文件处理11.3 文件与流文件与流o支持文件读、写的函数支持文件读、写的函数nfputs:向文件写入一行字符向文件写入一行字符ochar*fputs(char*s,F
5、ILE*stream);nfscanf:从文件读入格式化字符从文件读入格式化字符oint fcanf(FILE*stream,char*format,););nfprintf:向文件写入格式化字符向文件写入格式化字符oint fprintf(FILE*stream,char*format,););第第11章章 文件处理文件处理11.3 文件与流文件与流o支持文件读、写的函数支持文件读、写的函数nfread:从文件读入一定字节数目的字符从文件读入一定字节数目的字符oint fread(char*s,size_t size,size_t n,FILE*stream);nfwrite:向文件写入定字
6、节数目的字符向文件写入定字节数目的字符oint fwrite(char*s,size_t size,size_t n,FILE*stream);第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o顺序存取文件顺序存取文件:访问时必须按照记录的顺序:访问时必须按照记录的顺序依次进行依次进行n每个记录含有相同类型的项目每个记录含有相同类型的项目n各个记录的字节长度可能不同各个记录的字节长度可能不同第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序程序:顺序文件的建立:顺序文件的建立n1 /*Fig.11.3:fig11_03.c
7、 n2 Create a sequential file*/n3#include n4 n5 int main(void)n6 n7 int account;第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序程序:顺序文件的建立:顺序文件的建立n8 name 30;n9 double balance;n10 n11 FILE*cfPtr;n12n13 /*fopen opens file.Exit program if unable to create file */第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图1
8、1.3程序程序:顺序文件的建立:顺序文件的建立n14 if(cfPtr=fopen(“clients.dat”,“w”)=NULL)n15 printf(“File could not be openedn”);n16 n17 else n18 printf(“Enter the account,name,and balance.n”);第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序程序:顺序文件的建立:顺序文件的建立n19 printf(“Enter EOF to end input.n”);n20 printf(“?“);n21 scanf(
9、“%d%s%lf”,&account,name,&balance);n22 n23 /*write account,name and balance into file with fprintf*/第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序程序:顺序文件的建立:顺序文件的建立n24 while(!feof(stdin)n25 fprintf(cfPtr,“%d%s%.2fn”,account,name,balance);n26 printf(“?”);n27 scanf(“%d%s%lf”,&account,name,&balance);第第
10、11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序程序:顺序文件的建立:顺序文件的建立n28 /*end while */n29 n30 fclose(cfPtr);n31 /*end else*/n32n33 return 0;n34 /*end main*/第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o图图11.3程序执行结果程序执行结果nEnter the account,name,and balancenEnter EOF to end input.n?100 Jones 24.98n?200 Doe 345.67
11、n?300 White 0.00n?400 Stone-42.16n?500 Rich 224.62nz第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o打开文件打开文件:FILE*fopen(文件名,文件名,打开模式);打开模式);n成功成功:返回指针返回指针n失败失败:返回:返回NULLo文件打开模式文件打开模式nw:文本写操作。文本写操作。o若文件不存在,创建新文件;若存在则覆盖。若文件不存在,创建新文件;若存在则覆盖。nr:文本读操作。文件必须存在。文本读操作。文件必须存在。na:文本添加操作。在尾部添加。文本添加操作。在尾部添加。第第11章章 文件处理文件
12、处理11.4 顺序存取文件的创建顺序存取文件的创建o文件打开模式文件打开模式nw+:写方式打开文本文件,同时允许读文件操作写方式打开文本文件,同时允许读文件操作nr+:读方式打开文本文件,同时允许写文件操作读方式打开文本文件,同时允许写文件操作na+:添加方式打开文本文件,同时允许读、写文添加方式打开文本文件,同时允许读、写文件操作件操作n nwb:二进制写操作二进制写操作nrb:二进制读操作二进制读操作nab:二进制添加操作二进制添加操作第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o文件打开模式文件打开模式nwb+:写方式打开二进制文件,同时允许读文写方式打开
13、二进制文件,同时允许读文件操作件操作nrb+:读方式打开二进制文件,同时允许写文件读方式打开二进制文件,同时允许写文件操作操作nab+:添加方式打开二进制文件,同时允许读、添加方式打开二进制文件,同时允许读、写文件操作写文件操作 第第11章章 文件处理文件处理11.4 顺序存取文件的创建顺序存取文件的创建o文件打开模式文件打开模式第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序程序:顺序读取数据顺序读取数据n1 /*Fig.11.7:fig11_07.c n2 Reading and printing a Sequential file
14、*/n3#include n4n5 int main(void)n6 n7 int account;第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序程序:顺序读取数据顺序读取数据n8 name 30;n9 double balance;n10 n11 FILE*cfPtr;n12n13 /*fopen opens file.Exit program if unable to create rile */第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序程序:顺序读取数据顺序读取数据
15、n14 if(cfPtr=fopen(“clients.dat”,“w”)=NULL)n15 printf(“File could not be openedn”);n16 n17 else n18 printf(“%-10s%-13s%sn”,”account”,“name”,“balance”);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序程序:顺序读取数据顺序读取数据n19 fscanf(“cfPtr,“%d%s%lf”,&account,name,&balance);n20n21 /*while not end of fil
16、e*/n22 while(!feof(cfPtr)n23 printf(“%-10d%-13s%7.2f n”,account,name,balance);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序程序:顺序读取数据顺序读取数据n24 fscanf(“cfPtr,“%d%s%lf”,&account,name,&balance);n25 /*end while*/n26n27 fclose(cfPtr);n28 /*end else*/n29 第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据
17、o图图11.7程序程序:顺序读取数据顺序读取数据n30 return 0;n31 /*end main*/第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o图图11.7程序执行结果程序执行结果nAccount Name Balancen100 Jones 24.98n200 Doe 345.67n300 White 0.00n400 Stone -42.16n500 Rich 224.62第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o多次读取文件时可以将文件复位多次读取文件时可以将文件复位n复位函数复位函数:r
18、ewind(cfPtr);o文件偏移量文件偏移量:距文件开头的字节数:距文件开头的字节数o重新定位文件指针指向文件的开头重新定位文件指针指向文件的开头n文件偏移量为文件偏移量为0第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n请编写一个程序,使用运算符请编写一个程序,使用运算符sizeof来确定不同来确定不同数据类型在您的计算机系统中的字节长度。将结数据类型在您的计算机系统中的字节长度。将结果写入文件果写入文件datasize.dat中,这样今后就可以中,这样今后就可以随时打印结果。按照如
19、下格式将结果写入文件。随时打印结果。按照如下格式将结果写入文件。(注:在您的计算机上长度结果可能有所不同)(注:在您的计算机上长度结果可能有所不同)nData type Sizenchar 1nunsigned char 1第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度nshort int 2nunsigned short int 2nint 4nunsigned int 4nlong int 4nunsigned long int 4第第11章章 文件处理文件处理11.5 从顺序存取文件
20、中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度nfloat 4ndouble 8nlong double 16第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n /*hw11.16.c */n#include n#define SIZE 100nint main()nn FILE*fPtr;第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度
21、n char str SIZE;nn fPtr=fopen(“datasize.dat,w+);n if(fPtr=NULL)n printf(创建文件创建文件 datasize.dat 失败失败n);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n elsen n fprintf(fPtr,%-30s%4sn,Data type,Size);n fprintf(fPtr,%-30s%4dn,char,sizeof(char);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数
22、据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n fprintf(fPtr,%-30s%4dn,unsigned char,sizeof(unsigned char);n fprintf(fPtr,%-30s%4dn,short,sizeof(short);n fprintf(fPtr,%-30s%4dn,unsigned short,sizeof(unsigned short);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n fprintf(
23、fPtr,%-30s%4dn,int,sizeof(int);n fprintf(fPtr,%-30s%4dn,unsigned int,sizeof(unsigned int);n fprintf(fPtr,%-30s%4dn,long int,sizeof(long int);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n fprintf(fPtr,%-30s%4dn,unsigned long int,sizeof(unsigned long int);n n fprintf(fP
24、tr,%-30s%4dn,float,sizeof(float);n fprintf(fPtr,%-30s%4dn,double,sizeof(double);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n fprintf(fPtr,%-30s%4dn,long double,sizeof(long double);n n n if(fPtr!=NULL)n 第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件
25、输出数据类型的字节长度n printf(将文件将文件datasize.data中的中的 内容显示在屏幕上内容显示在屏幕上n);nrewind(fPtr);nfgets(str,SIZE,fPtr);nwhile(!feof(fPtr)nn printf(%s,str);n fgets(str,SIZE,fPtr);第第11章章 文件处理文件处理11.5 从顺序存取文件中读取数据从顺序存取文件中读取数据o例例:向文件输出数据类型的字节长度向文件输出数据类型的字节长度n /*end while*/nfclose(fPtr);n /*end if*/n n return 0;n /*end main
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 大学 教程 11
限制150内