C语言文件操作常用函数详解_第1页
C语言文件操作常用函数详解_第2页
C语言文件操作常用函数详解_第3页
C语言文件操作常用函数详解_第4页
C语言文件操作常用函数详解_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

C语言文件操作详解在语言文件操作的过程中,通常有以下几种方式:1. 单个字符的操作:fputc函数原型:int fputc(int c, FILE *fp);功能:把一字节代码c写入fp指向的文件中返回值:正常,返回c;出错,为EOF(-1)fgetc函数原型:int fgetc(FILE *fp);功能:从fp指向的文件中读取一字节代码返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF(-1)feof 函数原型:int feof(FILE *fp);功能:判断文件是否到末尾返回值:文件未结束,返回0;文件结束,返回真(非0)示例:#include #include void main()char ch;FILE *fp1 = fopen(d:a.dat, wb); /* 以写的方式打开二进制文件 */FILE *fp2;if(NULL = fp1)printf(Can not open this file!n);exit(0);printf(please input a string:);ch = getchar();while(ch != #) /* 输入#号结束 */fputc(ch, fp1); /* 依次向文件中写 */ch = getchar();fflush(stdin); /* 清空输入缓冲区 */fclose(fp1);/* 关闭文件 */fp2 = fopen(d:a.dat, rb); /* 以读的方式打开二进制文件 */if(NULL = fp2)printf(Can not open this file!n);exit(0);while(!feof(fp2)/* 判断是否到达文件末尾 */ch = fgetc(fp2);/* 从文件中依次读取 */putchar(ch);putchar(n);fflush(stdout);/* 清空输出缓冲区 */fclose(fp2);/* 关闭文件 */注意:putc(ch,fp)与fputc(ch,fp)效果一致,但是putc可以作为宏替换,速度更快getc(fp)与fgetc(fp)效果一致,但是getc可以作为宏替换,速度更快putchar(c)则是fputc(c,stdout)getchar( )则是fgetc(stdin)2. 对字符串的操作:char *fgets(char *s, int n, FILE *fp)int fputs(char *s, FILE *fp)功能:fgets:从fp指向的文件中读一个长度为n的字符串,保存到s中。其中char* s要是已经有内存空间的,通常是用数组定义的,或者用char*则要用malloc分配内存。fputs:向fp所指向的文件中写入字符串s。返回值:fgets:正常时返回读取字符串的首地址;出错或文件尾,返回NULLfputs:正常时返回写入的最后一个字符;出错为EOF(-1)示例:#include #include #include void main()FILE *fp; char string100; if(fp = fopen(file.txt, w) = NULL) printf(cannt open this file!n);exit(0); while(strlen(gets(string) 0) /* 从键盘输入字符串,回车停止 */ fputs(string, fp);/* 将字符串写入文件 */ fputs(n, fp);/* 在最后加上一个n */ fclose(fp); if(fp = fopen(file.txt,r) = NULL) printf(cannt open this file!n);exit(0); while(fgets(string, 10, fp) != NULL) /* 判断是否到达文件末尾 */ fputs(string, stdout); /* 等价于puts(string); */ fclose(fp);3. 对二进制形式的块读写:函数原型:size_t fread(void *buffer,size_t size, size_t count, FILE *fp);size_t fwrite(void *buffer,size_t size, size_t count, FILE *fp);功能:读/写数据块fread与fwrite 一般用于二进制文件的输入/输出fread:从fp所指向的文件中读取count个块,每个块的长度为size个字节,存放到以buffer为首地址的内存中。其中buffer必须已经是由内存空间的。fwrite:从以buffer为首地址的内存中读取count个块,每个块的长度为size个字节,写入到fp所指向的文件中。返回值:成功,返回读/写的块数;出错或文件尾,返回0说明:buffer: 指向要输入/输出数据块的首地址的指针size: 读/写的数据块的大小(字节数)count: 要读/写的数据块的个数fp: 要读/写的文件指针示例:#include #include typedef struct STUDENTchar sNo5;char sName20;double score;STUDENT;void main()/* 只对单个的时候 */int x = 19;/int y = 0;/FILE* fp = fopen(d:a.dat, wb);/if(NULL = fp)/printf(Can not open this file!n);/exit(0);/fwrite(&x, sizeof(x), 1, fp);/fclose(fp);/fp = fopen(d:a.dat, rb);/if(NULL = fp)/printf(Can not open this file!n);/exit(0);/fread(&y, sizeof(y), 1, fp);/printf(%dn, y);/fclose(fp);/* 对于块的时候 */int x = 1, 2, 3, 4, 5, 6, 7, 8, 9;/int y9 = 0;/int i;/FILE* fp = fopen(d:a.txt, wb);/if(NULL = fp)/printf(Can not open this file!n);/exit(0);/fwrite(x, sizeof(int), sizeof(x)/sizeof(int), fp);/fclose(fp);/fp = fopen(d:a.txt, rb);/if(NULL = fp)/printf(Can not open this file!n);/exit(0);/fread(y, sizeof(int), sizeof(y)/sizeof(int), fp);/for(i = 0; i %s-%lfn, stu2.sNo, stu2.sName, stu2.score);fclose(fp);4. 格式化操作文本文件:函数原型:int fprintf(FILE *fp,const char *format,argument,)int fscanf(FILE *fp,const char *format,address,)功能:按格式对文件进行读写操作。二进制的文件不要用,而改用fread和fwrite。fprintf:输出列表中的各项数据按指定的格式写入到fp指向的文件中fscanf:从fp所指向的文件中按指定的格式读取数据依次存放到输出列表中的各项。返回值:成功,返回读写的个数;出错或文件尾,返回EOF(-1),eg:fprintf(fp,“%d,%6.2f”,i,t); /将i和t按%d,%6.2f格式输出到fp文件fscanf(fp,“%d,%f”,&i,&t); /若文件中有3,4.5 ,则将3送入i, 4.5送入t示例:#include #include void main()int a = 5, b;double x = 3.5, y;char szText20 = HelloWorld!, szNewText20;FILE* fp = fopen(d:c.txt, w+);if(fp = NULL)printf(Can not open this file!n);exit(0);fprintf(fp, %d %lf %sn, a, x, szText);rewind(fp);fscanf(fp, %d %lf %sn, &b, &y, szNewText);printf(%d-%lf-%sn, b, y, szNewText);fclose(fp);5.rewind函数函数原型: void rewind(FILE *fp)功能:重置文件位置指针到文件开头返回值:无6.fseek函数函数原型: int fseek(FILE *fp,long offset,int whence)功能:文件随机定位函数,改变文件位置指针的位置。一般用于二进制文件。返回值:成功,返回0;失败,返回非0值Eg:fseek(fp,100L,0); fseek(fp,50L,1); fseek(fp,-10L,2); 第2个参数offset表示相对whence为基点的偏移字节数,要求是长整型数据,可以是正整数(向文件尾方向移动)、0(不移动)、负整数(向文件头方向移动)。第3个参数可以用如下的宏替换:n 文件开始 SEEK_SET 0n 文件当前位置 SEEK_CUR 1n 文件末尾 SEEK_END 27. ftell函数函数原型: long ftell(FILE *fp)功能:返回位置指针当前位置(用相对文件开头的位移量表示)返回值:成功,返回当前位置指针位置(长整型);失败,返回-1L,可以利用fseek和ftell函数实现求文件的元素个数。如下:#include using namespace std;int main()FILE* fp1 = fopen(c:a.txt, w);if(NULL = fp1)cout Can not open this file! endl;exit(0);char c = 0;while(c = getchar() != #)fputc(c, fp1);fseek(fp1, 0L, 2); /定位到文件末尾cout ftell(fp1) endl;/告诉当前文件指针的位置fclose(fp1);return 0;8.ferror函数函数原型: int ferror(FILE *fp)功能:测试文件是否出现错误返回值:未出错,0;出错,非0说明:每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试fopen打开文件时,ferror函数初值自动置为09. remove函数函数原型:intremove(char* path)功能:删除指定路径的文件返回值:成功删除,0;否则,-1举例:如下#include void main()if(-1 = remove(d:c.txt) /删除d盘下的c.txtprintf(remove failed!n);10. clearerr函数函数原型: void clearerr(FILE *fp)功能:使文件错误标志置为0返回值:无说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数举例:如下#include int main(void)FIL

温馨提示

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

评论

0/150

提交评论