语言程序设计-chap_第1页
语言程序设计-chap_第2页
语言程序设计-chap_第3页
语言程序设计-chap_第4页
语言程序设计-chap_第5页
免费预览已结束,剩余45页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十二章文12.1将短句 oWorld”写入到文12.2学生成绩文12.3文件12.4文件综合应用:个人小金库的管本章要什么是文件?C文件是如何的什么是文本文件和二进制文件怎样打开、关闭文件怎样编写文件读写程序怎样编写程序,实现简单的数据处理将短句 例12-1把短句“ oWorld!”保存到磁盘文#include<stdio.h>#include<stdlib.h>intmain(void)

例12-1源程 FILE /*定义文件指针if(fpfopen("f1.txt",wNULL){/*打开文printf("Fileopenerror!\n");}fprintf(fp,"%s"," oWorld!");/*写文件*/if(fclose(fp)){ /*关闭文件*/printf("Cannotclosethefile!\n"}return}文件的概文件:保存在外器上的一组数据的特点🙜数据长久保🙜数据长度不🙜数据按顺序存字字字字字🙜ASCII(文本文textstream)字符🙜二进制码(二进制文件binary例如,整数🙜文本文件保存:49505152(4个字符🙜二进制文件保存:04D2(1234的二进制数由于磁盘速度直接把数据写到磁盘效率很程序控由操动完文512字由操动完文512字缓冲数缓冲文件系🙜向磁盘输出数据:数据缓冲区,装满缓冲区后磁盘文件。🙜从磁盘读入数据:先从磁盘文件将一批数程序控数

52字

动完缓冲文缓冲内存单

用什么标

内存单

文件缓冲文件与文件类用用文件指针指示文件缓冲区中具体读写缓冲缓冲数程序控

由操系系统动完文 512512文件结构与文件类型指自定义类型typedef<已有类型名><新类型名自定义类型<已有类型名<新类型名i,i,自定义类型(typedef)的使用方🙜定义变 int🙜变量名→新类型 int→🙜加上 typedefint🙜用新类型名定义变量INTEGERintint intNUM[10] a<===>inta[10]FILE:结构类typedefFILE:结构类typedef定义,stdio.htypedefstruct{/*缓冲区使用/*文件状态标志/*文件描述符/*缓冲区大小unsigned/*文件缓冲区的首地址unsigned/*指向文件缓冲区工作指unsigned/*其他信}FILE*

文件类型指指向文件缓冲区,通过移动指针实现对文件的操数缓数缓冲程序控

由操 512512系统动完文系统动完文12.2学生成绩文例12-2已知一个数据文件f.txt中保存了5个学生的计#include"stdio.h"intmain(void) FILE* /*定义文件指针longcharstname[20];intscore;if((fpfopen("f.txt","r") /*打开文件printf("Fileopenerror!\n");}while(!feof(fp){fscanf(fp,"%ld%s%d",&num,stname,printf("%ld%s%d\n",num,stname,if(fclose(fp)/*关闭文件 printf("Cannotclosethefile!\n");}}打开文if((fp=fopen("f.txt","r"))==NULL){printf("Fileopenerror!\n");}fopen("文件名","文件打开方式🙜使文件指针与相应文件实体对应起🙜程序对文件指针进行操作,即fp代表磁盘文fopen("文件名","文件打开方式

打开文🙜使文件指针与相应文件实体对应起🙜程序对文件指针进行操作,即fp代表磁盘文函数fopen的返回🙜不成功,则返回一个NULL(空值exit(0):关闭所有打开的文件,并终止程序的执🙜参数0表示程序正常结束🙜非0参数通常表示不正常的程序结fp=fopen("f.txt",文件打开方式参数

文件打开方文本文件使用方式含使用方式含“r打开只读文件“rb打开只读文件“w建立只写新文件“wb建立只写新文件“a打开添加写文件打开添加写文件“r+打开读/写文件“rb+打开读/写文件“w建立读/写新文件“wb+建立读/写新文件“a打开读/写文件“ab+打开读/写文件if读文指定的文件必须存在,否则出错

文件读写与打if写文件(指定的文件可以存在,也可以不存在if"w方式if该文件已经存原文件将被删去重新建立按指定的名字新建一个文件elseif"a方式if该文件已经存写入的数据将被添加到指定文件原有数据的后面,不会删去原来的内容按指定的名字新建一个文件(与“w”相同if文件同时读和"r+"、"w"a打开文if(fclose(fp)

printf("Cannotclosethefile!\n"}fclose(文件指针🙜把缓冲区中的数据写入磁盘扇区,确保写文件的正常完🙜释放文件缓冲区单元和FILE结构体,使文件指件脱钩函数fclose的返回🙜返回0:正常关🙜返回非0:无法正常关闭文12.3文件例12-3已知一个文本数据文件f1.txt,请将该文件一份,保存为f2.txt。 #include<stdio.h>intmain(void) FILE*fp1,*fp2charc;if((fp1=pprintf("Fileo p

while(!feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}fclose(fp1);fclose(fp2);return0;}if((fp2=fopen("f2.dat","w"))==NULL){printf("Fileopenerror!\n");}打开多个文if((fp1=fopen(f1.dat,"r"))==NULL){printf("Fileopenerror!\n");}if((fp2=fopen("f2.dat","w"))==printf("Fileopenerror!\n");}CC语言允许同时打开多个文🙜不同的文件对应不同的文件指🙜不允许同一个文件在关闭前再次打文件读写函字符读写函数 fgetc/字符串读写函数:fputs格式化读写函数:fscanf二进制读写函数:fread其他相关函数🙜检测文件结尾函数🙜检测文件读写出错函数🙜清除末尾标志和出错标志函数🙜文件定位的函数字符读写函数fgetc和while(!feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}函数fputc🙜fputc(ch,把一个字ch写到fp所指示的磁盘文🙜返回-1(EOF):写文件失ch:写文件成字符读写函数fgetc和函数fgetcch=fgetc(fp)从fp所指示的磁盘文件上读入一个字符到🙜区分键盘字符输入函数getchar例12-从键盘输入10个字符,写到文件f2.txt中,再重键盘输写入文f2.txt读文屏幕显🙜键盘输入→f2.txt时,文件按写方式打开🙜f2.txt→显示到屏幕时,文件按读方🙜读和写是两种不同的操作f2.txt分别被打开int inti;charch;FILEif((fp=fopen("f2.txt","w"))== /*打开文件f2.txt*/printf("Fileopenerror!\n");

源程}for(i0i10i+/*写文件10次{ch=fputc(ch,fp)}if(fclose(fp/*关闭文件{printf("Cannotclosethefile!\n"}if((fp=fopen("f2.txt","r"))=={/*打开文件f2.txt*/printf("Fileopenerror!\n");

源程}for(i=0;i<10; /*读文件10次*/ch=fgetc(fp);}if(fclose(fp)){/*再次关闭文件*/printf("Cannotclosethefile!\n");}return字符串方式读写函数fgets和函数fputsfputs(s,用来向指定的文本文件写入一个字符🙜s:要写入的字符串,结束符’\0’不写入文件🙜🙜函数返回执行成功,函数返回所写的最后一个字否则,函数返回字符串方式读写函数fgets和函数fgets()fgets(snfp);从文本文件中字符字符串方式读写函数fgets和串存入s所指向内存地址开始的n-1个连续的内存单🙜函数返回执行成功,返的字符串如果失败,则返回空指🙜函数返回执行成功,返的字符串如果失败,则返回空指针,这时,s的内容不确将字符串"apple""grape"pear写入到磁盘文f12-5.txt中,然后再从该文件中读出,显示到屏int FILE

例12-chara[][80]={"apple","grape","pear"},strout[80]="";inti;if((fp=fopen("f12-5.txt","w"))==NULL){printf("Fileopenerror!\n");exit(0);}for(i=0;i<fputs(a[i],fp);例12-if((fp=fopen("f12-5.txt","r"))==printf("Fileopenerror!\n");}i=while(!feof(fp)if(fgets(strout,strlen(a[i++])+1,fp)!=NULL)}return0;}格式化文件读写fscanf和fscanf(文件指针,格式字符串,输入表fprintf(文件指针,格式字符串,输出表指定格式的输入输出函FILE*fp;intn;floatx;fp=fopen("a.txt","r");fp=fopen("b.txt",fprintf(fpd%f”,nx);表示把变量n和x的数值写入将一个整数和一个字符串写入文件#include<stdio.h>voidmain(){char*p=“VC++6.0”;inti=617;FILEif((fp=fopen(“f3.dat","w"))==NULL{printf("Cannotopenfile!");exit(0);fprintf(fp,"%d,%s",i,p);}*数据块读写fread()和fread(buffer,size,count,从二进制文件中读入一个数据块到变fwrite(buffer,size,count,向二进制文件中写入一个数据🙜buffer:指针,表示存放数据的首地址🙜size:数据块的字节🙜count:要读写的数据块块🙜fp:文件指其他相关函feof(fp1:到文件结束位0:文件未结其他相关函函数rewindrewind(FILEch=fgetc(fp);while(ch!=EOFch=fgetc(fp);{FILE*fp;charch,st[20];if((fp==={printf("Cannotopenfile!");printf("inputastring:\n");函数fseek(fseek(fp,offset,用来控制指针移🙜offset:移动偏移量,long

其他相关函例如fseek(fp20L0):将文件位置指针移动到离文件fseek(fp20LSEEK_END):将文件位置指针移其他相关函函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论