资源描述:
《C语言程序设计 教学课件 作者 王玉 第十一章文件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十一章---文件1C语言程序设计文件分类按文件的逻辑结构:记录文件:由具有一定结构的记录组成(定长和不定长)流式文件:由一个个字符(字节)数据顺序组成按存储介质:普通文件:存储介质文件(磁盘、磁带等)设备文件:非存储介质(键盘、显示器、打印机等)按数据的组织形式:文本文件:ASCII文件,每个字节存放一个字符的ASCII码二进制文件:数据按其在内存中的存储形式原样存放2C语言程序设计如int型数100000010011100010000内存存储形式0010011100010000二进制形式001100010
2、0110000001100000011000000110000ASCII形式文本文件特点:存储量大、速度慢、便于对字符操作二进制文件特点:存储量小、速度快、便于存放中间结果3C语言程序设计文件类型指针文件结构体FILE缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio.h中typedefstruct{int_fd;//文件号int_cleft;//缓冲区中剩下的字符数int_mode;//文件操作方式char*_next;//文件当前读写位置
3、char*_buff;//文件缓冲区位置}FILE;4C语言程序设计文件类型指针指针变量说明:FILE*fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件文件关闭后,它的文件结构体被释放5C语言程序设计一、打开文件fopen函数原型:FILE*fopen(char*name,char*mode)功能:按指定方式打开文件返值:正常打开,为指向文件结构体的指针;打开失败,为NULL“r+/rb+”(读写)“a/ab”(追加)“w/wb”(只写)“r/rb
4、”(只读)“w+/wb+”(读写)“a+/ab+”(读写)为输入打开一个文本/二进制文件为输出打开或建立一个文本/二进制文件为读/写打开一个文本/二进制文件为读/写建立一个文本/二进制文件为读/写打开或建立一个文本/二进制文件向文本/二进制文件尾追加数据文件使用方式含义6C语言程序设计三、文件的读写1.字符I/O:fputc与fgetcfputc函数原型:intfputc(intc,FILE*fp)功能:把一字节代码c写入fp指向的文件中返值:正常,返回c;出错,为EOFfgetc函数原型:intfgetc(
5、FILE*fp)功能:从fp指向的文件中读取一字符返值:正常,返回读到的字符;读到文件尾或出错,为EOF7C语言程序设计二、文件关闭fclose作用:使文件指针变量与文件“脱钩”,释放文件结构体和文件指针函数原型:intfclose(FILE*fp)功能:关闭fp指向的文件返值:正常关闭为0;出错时,非08C语言程序设计例从键盘输入字符逐个存到磁盘文件中,直到输入#为止#includemain(){FILE*fp;charch,*filename=“out.txt”;if((fp=fopen
6、(filename,"w"))==NULL){printf("cannotopenfile");exit(0);}printf("Pleaseinputstring:");ch=getchar();while(ch!='#'){fputc(ch,fp);putchar(ch);ch=getchar();}fclose(fp);}9C语言程序设计#includemain(){FILE*fp;charch,*filename=“out.txt”;if((fp=fopen(filename,”
7、r"))==NULL){printf("cannotopenfile");exit(0);}while((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}例、读文本文件内容,并显示10C语言程序设计feof函数原型:intfeof(FILE*fp)功能:判断文件是否结束返值:文件结束,返回真(非0);文件未结束,返回0#includemain(){FILE*in,*out;charch,infile[10],outfile[10];scanf("%s
8、",infile);scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("Cannotopeninfile.");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("Cannotopenoutfile.");exit(0);}while(!feof(in))fputc(fg