《第10章文件操作.ppt》由会员分享,可在线阅读,更多相关《第10章文件操作.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章 文件操作,C语言程序设计 - 第10章 文件操作,2,目 录,文件概述文件类型指针文件的打开和关闭文件的读写文件的定位,C语言程序设计 - 第10章 文件操作,3,文件 (File),C语言中的文件C语言把文件看作一个字节的序列C语言对文件的存取是以字节为单位的文本文件(ASCII文件)按数据的ASCII形式存储二进制文件按数据在内存中的二进制形式存储,C语言程序设计 - 第10章 文件操作,4,文本文件和二进制文件,C语言程序设计 - 第10章 文件操作,5,缓冲文件系统,C语言程序设计 - 第10章 文件操作,6,文件类型指针,FILE类型保存被使用的文件的有关信息所有的文件操作
2、都需要FILE类型的指针FILE是库文件中定义的结构体的别名注意不要写成struct FILE举例FILE *fp;,C语言程序设计 - 第10章 文件操作,7,FILE类型,typedef struct short level; /*缓冲区满空程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*无缓冲则不读取字符*/ short bsize; /*缓冲区大小*/ unsigned char *buffer; /*数据缓冲区*/ unsigned char *curp; /*当前位置指针*/ unsi
3、gned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ FILE;,C语言程序设计 - 第10章 文件操作,8,文件的打开 (fopen函数),函数原型FILE *fopen(char *filename, char *mode);参数说明filename:要打开的文件路径mode :打开模式返回值若成功,返回指向被打开文件的指针若出错,返回空指针NULL(0),C语言程序设计 - 第10章 文件操作,9,文件的打开模式,C语言程序设计 - 第10章 文件操作,10,文件的打开举例,FILE *fp1, *fp2, *fp3;char filenam
4、e=file3.dat;/* 以文本只读方式打开file1 */if (!(fp1=fopen(file1, r) printf(Cannot Open This File!n); exit(0); /* 退出程序 */ /* 以二进制读写方式打开FILE2.TXT */fp2=fopen(C:HOMEFILE2.TXT, rb+);/* 以二进制读写方式打开file3.dat */fp3=fopen(filename, a+b);,C语言程序设计 - 第10章 文件操作,11,文件的关闭 (fclose函数),函数原型int fclose(FILE *fp);参数说明fp:要关闭的文件指针返
5、回值若成功,返回0若出错,返回EOF(-1)不用的文件应关闭,防止数据破坏丢失,C语言程序设计 - 第10章 文件操作,12,文件的关闭举例,FILE *fp;char file=D:USERSTUDENTS.DAT;if (!(fp=fopen(file, rb+) printf(Open file %s error!n, file); exit(0); . .fclose(fp);,C语言程序设计 - 第10章 文件操作,13,文件的读写,C语言程序设计 - 第10章 文件操作,14,feof函数,函数原型int feof(FILE *fp);参数fp:文件指针返回值若文件结束,返回非零值
6、若文件尚未结束,返回0,C语言程序设计 - 第10章 文件操作,15,fputc/putc函数,函数原型int fputc(int c, FILE *fp);int putc(int c, FILE *fp);参数c :要输出到文件的字符fp:文件指针返回值若成功,返回输出的字符若失败,返回EOF,C语言程序设计 - 第10章 文件操作,16,fgetc/getc函数,函数原型int fgetc(FILE *fp);int getc(FILE *fp);参数fp:文件指针返回值若成功,返回输入的字符若失败或文件结束,返回EOF,C语言程序设计 - 第10章 文件操作,17,fputc和fget
7、c函数举例,FILE *fp1, *fp2;char c;fp1 = fopen(file.in, r);fp2 = fopen(file.out, w);while(!feof(fp1) c = fgetc(fp1); fputc(c, fp2); fclose(fp1);fclose(fp2);,C语言程序设计 - 第10章 文件操作,18,fwrite和fread函数 (1),函数原型size_t fwrite(void *buffer, size_t size, size_t count, FILE *fp);size_t fread (void *buffer, size_t siz
8、e, size_t count, FILE *fp);,C语言程序设计 - 第10章 文件操作,19,fwrite和fread函数 (2),参数buffer:要读/写的数据块地址size :要读/写的每个数据项的字节数count :要读/写的数据项数量fp :文件指针返回值若成功,返回实际读/写的数据项数量若失败,一般返回0,C语言程序设计 - 第10章 文件操作,20,fwrite和fread函数举例,FILE *fp;int i;struct stud sNUM;fp=fopen(students.dat,rb+);for (i=0; iNUM; i+) fwrite(s+i,sizeof
9、(struct stud),1,fp);for (i=0; iNUM; i+) fread(s+i,sizeof(struct stud),1,fp);fclose(fp);,C语言程序设计 - 第10章 文件操作,21,fprintf和fscanf函数,函数原型int fscanf(FILE *fp, char *format,address,.);int fprintf(FILE *fp, char *format,argument,.);说明与printf和scanf函数类似从文件输入或输出到文件,C语言程序设计 - 第10章 文件操作,22,putw函数,函数原型int putw(in
10、t w, FILE *fp);参数w :要输出到文件的整数(字)fp:文件指针返回值若成功,返回输出的整数(字)若失败,返回EOF,C语言程序设计 - 第10章 文件操作,23,getw函数,函数原型int getw(FILE *fp);参数fp:文件指针返回值若成功,返回输入的整数(字)若失败,返回EOF,C语言程序设计 - 第10章 文件操作,24,fputs函数,函数原型int fputs(char *s, FILE *fp);返回值若成功,返回输出字符个数(或最后的字符)若失败,返回EOF说明字符串的结束标志0不会输出到文件也不会在字符串末尾自动添加换行符,C语言程序设计 - 第10章
11、 文件操作,25,fgets函数,函数原型char *fgets(char *s, int n, FILE *fp);返回值若成功,返回s首地址;若失败,返回NULL说明从fp输入字符串到s中输入n-1个字符,或遇到换行符或EOF为止读完后自动在字符串末尾添加0,C语言程序设计 - 第10章 文件操作,26,文件的定位,文件位置指针位置指针指向当前读写的位置每次读写文件,位置指针都会相应移动可以通过相关函数强制修改位置指针相关函数rewind函数fseek函数ftell函数,C语言程序设计 - 第10章 文件操作,27,rewind函数,函数原型void rewind(FILE *fp);参数
12、fp:文件指针功能使文件位置指针重新返回文件开头,C语言程序设计 - 第10章 文件操作,28,fseek函数 (1),函数原型int fseek(FILE *fp, long offset, int whence);参数fp :文件指针offset:偏移量whence:起始位置功能随机改变文件的位置指针,C语言程序设计 - 第10章 文件操作,29,fseek函数 (2),起始位置SEEK_SET(0):文件开始SEEK_CUR(1):文件当前位置SEEK_END(2):文件末尾举例fseek(fp, 100L, SEEK_SET);fseek(fp, -10L, SEEK_CUR);fseek(fp, -20L, SEEK_END);,C语言程序设计 - 第10章 文件操作,30,ftell函数,函数原型long ftell(FILE *fp);参数fp:文件指针返回值若成功,返回当前文件指针位置若出错,返回-1L,C语言程序设计 - 第10章 文件操作,31,结束,The End,