欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言大学教程C语言第11章.ppt

    • 资源ID:5426293       资源大小:244.50KB        全文页数:80页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言大学教程C语言第11章.ppt

    C语言大学教程课件(第11章),教材编著:Paul Deitel(美国)Harvey Deitel(美国)翻 译:苏小红等(哈尔滨工业大学)课件制作:杨晓东(郑州大学)授课教师:杨晓东,第11章 文件处理,本章主要内容文件的基本操作方法顺序存取文件的使用随机存取文件的使用,第11章 文件处理,11.1 引言将数据存储在变量或者数组中,都只能是暂时的程序运行结束时,这些数据就会丢失文件是用来永久存储数据的。文件可长久储存在硬盘、U盘、光盘等存储器上。,第11章 文件处理,11.2 数据的层次结构位:最简单的数据项,用0和1表示字符:8位二进制数。包括数字、字母等域:由一组表示特定意义的字符构成。记录:由一组相关的域构成。记录键:用于识别一个记录的某个域文件:由若干个记录构成。数据库:一组相关的文件可以构成数据库,第11章 文件处理,11.2 数据的层次结构,第11章 文件处理,11.3 文件与流文件与字符流相对应标准输入流:stdin标准输出流:stdout标准错误流:stderr每次打开文件都会返回一个指向FILE结构体的指针FILE结构体:文件描述头,即打开文件列表。,第11章 文件处理,11.3 文件与流支持文件读、写的函数fgetc:从文件读入一个字符int fgetc(FILE*stream);fputc:向文件写入一个字符int fputc(char ch,FILE*stream);fgets:从文件读入一行字符char*fgets(char*s,int n,FILE*stream);,第11章 文件处理,11.3 文件与流支持文件读、写的函数fputs:向文件写入一行字符char*fputs(char*s,FILE*stream);fscanf:从文件读入格式化字符int fcanf(FILE*stream,char*format,);fprintf:向文件写入格式化字符int fprintf(FILE*stream,char*format,);,第11章 文件处理,11.3 文件与流支持文件读、写的函数fread:从文件读入一定字节数目的字符int fread(char*s,size_t size,size_t n,FILE*stream);fwrite:向文件写入定字节数目的字符int fwrite(char*s,size_t size,size_t n,FILE*stream);,第11章 文件处理,11.4 顺序存取文件的创建顺序存取文件:访问时必须按照记录的顺序依次进行每个记录含有相同类型的项目各个记录的字节长度可能不同,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立1/*Fig.11.3:fig11_03.c 2 Create a sequential file*/3#include 4 5 int main(void)6 7 int account;,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立8 name 30;9 double balance;10 11 FILE*cfPtr;1213/*fopen opens file.Exit program if unable to create file*/,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立14 if(cfPtr=fopen(“clients.dat”,“w”)=NULL)15 printf(“File could not be openedn”);16 17 else 18 printf(“Enter the account,name,and balance.n”);,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立19 printf(“Enter EOF to end input.n”);20 printf(“?“);21 scanf(“%d%s%lf”,22 23/*write account,name and balance into file with fprintf*/,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立24 while(!feof(stdin)25 fprintf(cfPtr,“%d%s%.2fn”,account,name,balance);26 printf(“?”);27 scanf(“%d%s%lf”,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序:顺序文件的建立28/*end while*/29 30 fclose(cfPtr);31/*end else*/3233 return 0;34/*end main*/,第11章 文件处理,11.4 顺序存取文件的创建图11.3程序执行结果Enter the account,name,and balanceEnter EOF to end input.?100 Jones 24.98?200 Doe 345.67?300 White 0.00?400 Stone-42.16?500 Rich 224.62z,第11章 文件处理,11.4 顺序存取文件的创建打开文件:FILE*fopen(文件名,打开模式);成功:返回指针失败:返回NULL文件打开模式w:文本写操作。若文件不存在,创建新文件;若存在则覆盖。r:文本读操作。文件必须存在。a:文本添加操作。在尾部添加。,第11章 文件处理,11.4 顺序存取文件的创建文件打开模式w+:写方式打开文本文件,同时允许读文件操作r+:读方式打开文本文件,同时允许写文件操作a+:添加方式打开文本文件,同时允许读、写文件操作 wb:二进制写操作rb:二进制读操作ab:二进制添加操作,第11章 文件处理,11.4 顺序存取文件的创建文件打开模式wb+:写方式打开二进制文件,同时允许读文件操作rb+:读方式打开二进制文件,同时允许写文件操作ab+:添加方式打开二进制文件,同时允许读、写文件操作,第11章 文件处理,11.4 顺序存取文件的创建文件打开模式,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据1/*Fig.11.7:fig11_07.c 2 Reading and printing a Sequential file*/3#include 45 int main(void)6 7 int account;,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据8 name 30;9 double balance;10 11 FILE*cfPtr;1213/*fopen opens file.Exit program if unable to create rile*/,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据14 if(cfPtr=fopen(“clients.dat”,“w”)=NULL)15 printf(“File could not be openedn”);16 17 else 18 printf(“%-10s%-13s%sn”,”account”,“name”,“balance”);,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据19 fscanf(“cfPtr,“%d%s%lf”,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据24 fscanf(“cfPtr,“%d%s%lf”,28/*end else*/29,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序:顺序读取数据30 return 0;31/*end main*/,第11章 文件处理,11.5 从顺序存取文件中读取数据图11.7程序执行结果Account Name Balance100 Jones 24.98200 Doe 345.67300 White 0.00400 Stone-42.16500 Rich 224.62,第11章 文件处理,11.5 从顺序存取文件中读取数据多次读取文件时可以将文件复位复位函数:rewind(cfPtr);文件偏移量:距文件开头的字节数重新定位文件指针指向文件的开头文件偏移量为0,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度请编写一个程序,使用运算符sizeof来确定不同数据类型在您的计算机系统中的字节长度。将结果写入文件datasize.dat中,这样今后就可以随时打印结果。按照如下格式将结果写入文件。(注:在您的计算机上长度结果可能有所不同)Data type Sizechar 1unsigned char 1,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度short int 2unsigned short int 2int 4unsigned int 4long int 4unsigned long int 4,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度float 4double 8long double 16,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度/*hw11.16.c*/#include#define SIZE 100int main()FILE*fPtr;,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 char str SIZE;fPtr=fopen(“datasize.dat,w+);if(fPtr=NULL)printf(创建文件 datasize.dat 失败n);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 else fprintf(fPtr,%-30s%4sn,Data type,Size);fprintf(fPtr,%-30s%4dn,char,sizeof(char);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 fprintf(fPtr,%-30s%4dn,unsigned char,sizeof(unsigned char);fprintf(fPtr,%-30s%4dn,short,sizeof(short);fprintf(fPtr,%-30s%4dn,unsigned short,sizeof(unsigned short);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 fprintf(fPtr,%-30s%4dn,int,sizeof(int);fprintf(fPtr,%-30s%4dn,unsigned int,sizeof(unsigned int);fprintf(fPtr,%-30s%4dn,long int,sizeof(long int);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 fprintf(fPtr,%-30s%4dn,unsigned long int,sizeof(unsigned long int);fprintf(fPtr,%-30s%4dn,float,sizeof(float);fprintf(fPtr,%-30s%4dn,double,sizeof(double);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 fprintf(fPtr,%-30s%4dn,long double,sizeof(long double);if(fPtr!=NULL),第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度 printf(将文件datasize.data中的 内容显示在屏幕上n);rewind(fPtr);fgets(str,SIZE,fPtr);while(!feof(fPtr)printf(%s,str);fgets(str,SIZE,fPtr);,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度/*end while*/fclose(fPtr);/*end if*/return 0;/*end main*/,第11章 文件处理,11.5 从顺序存取文件中读取数据例:向文件输出数据类型的字节长度程序执行结果,第11章 文件处理,11.6 随机存取文件随机存取文件记录是等长的可以直接访问任一个记录可方便地进行插入、更改或删除操作。,第11章 文件处理,11.7 随机存取文件的创建函数fwrite:将内存中特定字节数目的数据存到文件中:FILE*fPtr;int number=102;fwrite(,第11章 文件处理,11.7 随机存取文件的创建函数fwrite:将内存中特定字节数目的数据存到文件中int nArray2=102,20;fwrite(nArray,sizeof(int),2,fPtr);函数fread:将文件中特定字节数目的数据输入到内存中fread(nArray,sizeof(int),2,fPtr);,第11章 文件处理,11.7 随机存取文件的创建问题创建一个最多能够存储100个固定长度记录的信用处理系统。每个记录都包含账号、姓、名和余额等四个域。其中账号作为记录键。最后完成的程序应该能够更新一个账号,插入一个新的账号记录,删除一个账号以及能够按照格式化文本文件的形式列出所有账号记录以供打印。请采用随机存取文件。,第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件2 Create a random-access file sequentiallly*/3#include 4 5/*clientData structure definition*/,第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件6 struct clientData 7 int acctNum;8 char lastName 15;9 char firstName 11;10 double balance;11;/*end structure clientData*/12,第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件13 int main(void)14 15 int i;/*1-100*/16 17/*create clientData with default information*/18 struct clientData blankClient=0,“”,“”,0.0;,第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件1920 FILE*cfPtr;21 22/*fopen opens file.Exit program if unable to create file*/23 if(cfPtr=fopen(“credit.dat”,“wb”)=NULL),第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件24 printf(“File could not be openedn”);25/*end if*/26 else 27/*output 100 blank records to file*/28 for(i=1;i=100;i+),第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件29 fwrite(33/*end else*/,第11章 文件处理,11.7 随机存取文件的创建图11.11程序:创建随机存取文件3435 return 0;36/*end main*/,第11章 文件处理,11.7 随机存取文件的创建图11.11程序执行结果在当前目录下生成文件:credit.dat,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据2 Writing to a random-access file*/3#include 4 5/*clientData structure definition*/,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据6 struct clientData 7 int acctNum;8 char lastName 15;9 char firstName 11;10 double balance;11;/*end structure clientData*/12,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据13 int main(void)14 15 FILE*cfPtr;16 17/*create clientData with default information*/18 struct clientData blankClient=0,“”,“”,0.0;,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据1920/*fopen opens the file;Exits if file connot be opened*/21 if(cfPtr=fopen(“credit.dat”,“rb+”)=NULL)22 printf(“File could not be openedn”);23/*end if*/,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据24 else 25/*retuire user to specify account number*/26 printf(“Enter account number”27“(1 to 100,0 to end input)n?“);28 scanf(“%d”,29,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据30/*user enters information,which is copied into file*/31 while(client.acctNum!=0)32/*user enters last name,firstname,balance*/33 printf(“Enter lastname,firstname,balancen?“);,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据34 35/*set record lastName,firstName and balance*/36 fscanf(stdin,“%s%s%lf”,client.lastName,37 client.firstName,38,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据39/*seek position in file to user specified record*/40 fseek(cfPtr,(client.acctNum-1)*41 sizeof(struct clientData),SEEK_SET);42,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据43/*write user-specified information in file*/44 fwrite(4546/*enable user to input another account number*/,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据47 printf(“Enter account numbern?“);48 scanf(“%d”,52/*end else*/,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序:向随机存取文件写入数据5354 return 0;55/*end main*/,第11章 文件处理,11.8 随机向一个随机存取文件中写入数据图11.12程序执行结果,第11章 文件处理,11.9 从一个随机存取文件中读取数据fread函数:将特定数目的字节从一个文件中读入内存fread(,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据2 Reading a random-access file sequentially*/3#include 4 5/*clientData structure definition*/,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据6 struct clientData 7 int acctNum;8 char lastName 15;9 char firstName 11;10 double balance;11;/*end structure clientData*/12,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据13 int main(void)14 15 FILE*cfPtr;16 17/*create clientData with default information*/18 struct clientData blankClient=0,“”,“”,0.0;,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据1920/*fopen opens the file;Exits if file connot be opened*/21 if(cfPtr=fopen(“credit.dat”,“rb”)=NULL)22 printf(“File could not be openedn”);23/*end if*/,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据24 else 25 printf(“%-6s%-16s%-11s%10sn”,“Acct”,26“Last Name”,“First Name”,“Balance”);2728/*read all records from file(until eof)*/,第11章 文件处理,11.9 从一个随机存取文件中读取数据据图11.15程序:从随机存取文件读取数据29 while(!feof(cfPtr)30 fread(3132/*display resord*/33 if(client.acctNum!=0),第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序:从随机存取文件读取数据34 printf(“%-6d%-16s%-11s%10.2fn”,client.acctNum,35 client.lastName,36 client.firstName,client.balance);37/*end if*/38/*end while*/,第11章 文件处理,11.9 从一个随机存取文件中读取数据据图11.15程序:从随机存取文件读取数据3940 fclose(cfPtr);41/*end else*/4243 return 0;42/*end main*/,第11章 文件处理,11.9 从一个随机存取文件中读取数据图11.15程序执行结果Acct Last Nam First name Balance29 Brown Nancy-24.5433 Dunn Stacey 314.3337 Baker Doug 0.0088 Smith Dave 258.3496 Stone Sam 34.98,第11章 文件处理,11.10 案例学习:事务处理程序图11.16程序使用随机存取文件实现一个真实的事务处理程序,这个程序管理的是银行的账号信息。图11.16程序功能更新一个现有的账号添加一个新的账号删除一个账号形成文本文件以供打印。,第11章 文件处理,11.10 案例学习:事务处理程序图11.16程序摡貌:程序的5个选项1:调用函数textFile将所有的账号信息以指定格式列表的形式存储到一个名为accounts.txt的文本文件中。2:调用函数 updateRecord来更新一个已有的账号3:调用函数 newRecord来向文件中添加一个新的账号,第11章 文件处理,11.10 案例学习:事务处理程序图11.16程序摡貌:程序的5个选项4:调用函数 deleteRecord从文件中删除一个记录5:结束程序的执行。,第11章 文件处理,本章小结文件可以永久保存大批量数据数据是按照一定的层次结构进行存储的文件总是和流联系在一起顺序存取文件需要从文件头开始连续地读取数据随机存取文件的记录有确定的字节长度,可以随机进行存取。,

    注意事项

    本文(C语言大学教程C语言第11章.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开