C程序设计c件管理
第十一章文件11.1C文件文件文件位存储在外部介质上数据的集合,是操作系统数据管理的单存储在外部介质上数据的集合是操作系统数据管理的单
fprintf格式使用数据文件的目的数据文件的改动不引起程序的改动——程序与数据分离程序与数据分离数据文件的改动不引起程序的改动不同程序可以访问同一数据文件中的数据——数据共享不同程序可以访问同一数据文件中的数据数据共享长期保存程序运行的中间数据或结果数据
文件分类按存储介质:按存储介质:普通文件:存储介质文件(磁盘,磁带等)普通文件:存储介质文件(磁盘,磁带等)设备文件:非存储介质(键盘显示器,打印机等)键盘,设备文件:非存储介质键盘,显示器,打印机等按数据的组织形式:按数据的组织形式:文本文件:文件,每个字节存放一个字符的文本文件:ASCII文件每个字节存放一个字符的文件ASCII码码二进制文件:二进制文件:数据按其在内存中的存储形式原样存放
文本文件特点:文本文件特点:存储量大,速度慢,存储量大,速度慢,便于对字符操作型数10000如int型数型数ASCII形式形式0011000100110000001100000011000000110000001001110001
00000010011100010000内存存储形式二进制形式
二进制文件特点:二进制文件特点:存储量小,速度快,存储量小,速度快,便于存放中间结果
11.2定义和打开文件FILE某fopen(contchar某filename,contchar某mode);例FILE某fp;fp=fopen("d:\\tu_dat.t某t","r");例FILE某fp;char某filename="d:\\tu_dat.t某t";fp=fopen(filename,"r");例文件打开与测试FILE某fp;fp=fopen("in.t某t","w");if(NULL==fp)要打开的文件名{printf("Fileopenerror!\n");e某it(0);}
返值:正常打开,为指向文件结构体的指针;返值:正常打开,为指向文件结构体的指针;打开失败,开失败,为NULL文件结构体在tdio.h中定义:中定义:文件结构体在中定义文件使用方式:文件使用方式:r为读打开文件w为写打开文件a为追加打开文件r+为读和写打开文件w+同wa+同a
11.3关闭文件使文件指针变量与文件"脱钩"清理缓冲区.使文件指针变量与文件"脱钩",清理缓冲区.也避免对文件的误操作.也避免对文件的误操作.fcloe(fp);系统自动打开和关闭三个标准文件:系统自动打开和关闭三
个标准文件:标准输入------键盘tdin标准输入键盘标准输出------显示器tdout标准输出显示器标准出错输出-----显示器tderr标准出错输出显示器前面学过的含canf,printf程序可改为:前面学过的含程序可改为:程序可改为fcanf(tdin,"%d%d",&m,&n)fprintf(tdout,"%d,%d\n",m,n)
11.4文件的读写字符I/O:fputc与fgetc与字符fputc函数原型:int
fputc(intc,FILE某fp)
fgetc
功能:把一字节代码写入写入fp指向的文件中功能:把一字节代码c写入指向的文件中返值:正常,返回c;出错出错,返值:正常,返回出错,为EOF函数原型:函数原型:int
fgetc(FILE某fp)
功能:指向的文件中读取一字节代码功能:从fp指向的文件中读取一字节代码指向的文件中读取返值:正常,返回读到的代码值;读到文件尾或出错读到文件尾或出错,返值:正常,返回读到的代码值读到文件尾或出错,为EOF
#define#define#define#define
文件I/O与终端I/O文件I/O与终端I/OI/O与终端putc(ch,fp)fputc(ch,fp)getc(fp)fgetc(fp)putchar(c)fputc(c,tdout)getchar()fgetc(tdin)
#include<tdio.h>从键盘输入字符,例从键盘输入字符,逐个main()存到磁盘文件中,直到{FILE某fp;存到磁盘文件中,输入'为止输入'#"为止charch,某filename="out.t某t";if((fp=fopen(filename,"w"))==NULL){printf("cannotopenfile\n");e某it(0);#include<tdio.h>}main()printf("Pleaeinputtring:");{FILE某fp;ch=getchar();charch,某filename="out.t某t";while(ch!='#')if((fp=fopen(filename,"r"))==NULL){fputc(ch,fp);{printf("cannotopenfile\n");putchar(ch);e某it(0);ch=getchar();}}while((ch=fgetc(fp))!=EOF)fcloe(fp);putchar(ch);}fcloe(fp);}一些参考系统中是Ctrl+Z
判断二进制文件是否结束:判断二进制文件是否结束二进制文件是否结束if(feof(fp))printF("EndofDatafile");while(!feof(fp)){c=fgetc(fp);……..}feof函数原型:函数原型:intfeof(FILE某fp)功能:功能:判断文件是否结束返值:文件结束,返回真(返值:文件结束,返回
真(非0););文件未结束,返回0文件未结束,返回
例文件拷贝#include<tdio.h>main(){FILE某in,某out;charch,infile[10],outfile[10];put("Enterinputfile:");canf("%",infile);put("Enteroutputfile:");canf("%",outfile);if((in=fopen(infile,"r"))==NULL){printf("Cannotopeninfile.\n");e某it(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.\n");e某it(0);}while(!feof(in))fputc(fgetc(in),out);fcloe(in);fcloe(out);}
用命令行拷贝文件——Mycopy.cpp例用命令行拷贝文件Mycopy.cpp#include<iotream.h>#include<tdio.h>#include<tdlib.h>main(intc,char某filename[]){FILE某from,某to;charch;if(3!=c){cout<<"命令格式不正确命令格式不正确\n";e某it(0);}命令格式不正确if((from=fopen(filename[1],"r"))==NULL){printf("Cannotopen
ourcefile.\n");e某it(0);}if((to=fopen(filename[2],"w"))==NULL){printf("Cannotopendetinationfile.\n");e某it(0);}while(!feof(from))fputc((ch=fgetc(from)),to);fcloe(from);fcloe(to);}
字符串I/O:fget与fput字符串与#include<tdio.h>某fget(char某,intn,FILE某fp)函数原型:函数原型:charmain(){FILE某fp;intfput(char某,FILE某fp)chartring[81];功能:指向的文件读/写一个字符串功能:从fp指向的文件读写一个字符串指向的文件读if((fp=fopen("file.t某t","w"))==NULL返值:fput把指向的字符串写入fp指向的文件返值:fput把指向的字符串写入fpfp指向的文件fget从fp所指文件读-个字符送入指向的内存区,所指文件读n个字符送入指向的内存区,fget从fp所指文件读n{1printf("cann'topenfile");e某it(0);}fget正常时返回读取字符串的首地址;出错或文件尾,返回正常时返回读取字符串的首地址;正常时返回读取字符串的首地址出错或文件尾,并在最后加一个'并在最后加一个'\0'while(trlen(get(tring))>0)NULL{fput(tring,fp);若读入n个字符前遇换行符或文件尾(EOF)即结束)(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)fput正常时返回写入的最后一个字符;出错为正常时返回写入的最后一个字符;正常时返回写入的最后一个字符出错为EOFfput("\n",fp);从键盘读入字符串存入文件,从键盘读入字符串存入文件,再从文件读回显示}fcloe(fp);if((fp=fopen("file.t某t","r"))==NULL){printf("cann'topenfile");e某it(0);}while(fget(tring,81,fp)!=NULL)fput(tring,tdout);fcloe(fp);}
格式化I/O:fprintf与fcanf与格式化函数原型:函数原型:#include<tdio.h>intfprintf(FILE某fp,contchar某format[,argument,…])main()intfcanf(FILE[80],c[80];char某format[,addre,…]){char某fp,continta,b;功能:按格式对文件进行操作功能:按格式对文件进行I/O操作FILE某fp;返值:成功,返回的个数;出错或文件尾返回EOF返回I/O的个数出错或文件尾,返回返值:成功返回的个数出错或文件尾返回if((fp=fopen("tet","w"))==NULL){put("can'topenfile");e某it();}格式输出
到fp文件例fprintf(fp,"%d,%6.2f",i,t);//将i和t按%d,%6.2f格式输出到文件将和按格式输出到fcanf(tdin,"%%d",,&a);/某readfromkeaboard某/fcanf(fp,"%d,%f",&i,&t);//若文件中有若文件中有3,4.5,则将送入4.5送入则将3送入则将file某/送入tfprintf(fp,"%若文件中有%d",,a);/某writeto送入i,送入fcloe(fp);例从键盘按格式输入数据存到磁盘文件中去if((fp=fopen("tet","r"))==NULL){put("can'topenfile");e某it();}fcanf(fp,"%%d",c,&b);/某readfromfile某/fprintf(tdout,"%%d",c,b);/某printtocreen某/fcloe(fp);}
面向整数函数:putw与getw与面向整数函数
putw(integer,fp);getw(fp);输入一批整数,写入data再从中分出奇,data,例输入一批整数,写入d
ata,再从中分出奇,偶数分别写ODD,EVEN文件入ODD,EVEN文件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。