C语言文件操作常用函数详解

  • 格式:doc
  • 大小:50.50 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言文件操作详解

在C语言文件操作的过程中,通常有以下几种方式:

1.单个字符的操作:

fputc

函数原型:intfputc(intc,FILE*fp);

功能:把一字节代码c写入fp指向的文件中

返回值:正常,返回c;出错,为EOF(-1)

fgetc

函数原型:intfgetc(FILE*fp);

功能:从fp指向的文件中读取一字节代码

返回值:正常,返回读到的代码值;读到文件尾或出错,为EOF(-1) feof

函数原型:intfeof(FILE*fp);

功能:判断文件是否到末尾

返回值:文件未结束,返回0;文件结束,返回真(非0)示例:

#include

#include

voidmain()

{

charch;

FILE*fp1=fopen("d:\\a.dat","wb");/*以写的方式打开二进制文件*/

FILE*fp2;

if(NULL==fp1)

{

printf("Cannotopenthisfile!\n");

exit(0);

}

printf("pleaseinputastring:");

ch=getchar();

while(ch!='#')/*输入#号结束*/

{

fputc(ch,fp1);/*依次向文件中写*/

ch=getchar();

}

fflush(stdin);/*清空输入缓冲区*/

fclose(fp1); /*关闭文件*/

fp2=fopen("d:\\a.dat","rb");/*以读的方式打开二进制文件*/

if(NULL==fp2)

{

printf("Cannotopenthisfile!\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,intn,FILE*fp)

intfputs(char*s,FILE*fp)

功能:

fgets:从fp指向的文件中读一个长度为n的字符串,保存到s中。其中char*s要是已经有内存空间的,通常是用数组定义的,或者用char*则要用malloc分配内存。

fputs:向fp所指向的文件中写入字符串s。

返回值:

fgets:正常时返回读取字符串的首地址;出错或文件尾,返回NULL

fputs:正常时返回写入的最后一个字符;出错为EOF(-1)示例:

#include

#include

#include

voidmain()

{

FILE*fp;

charstring[100];

if((fp=fopen("file.txt","w"))==NULL)

{

printf("cann'topenthisfile!\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("cann'topenthisfile!\n");

exit(0);

}

while(fgets(string,10,fp)!=NULL)/*判断是否到达文件末尾*/

fputs(string,stdout);/*等价于puts(string);*/

fclose(fp);

}

3.对二进制形式的块读写:

函数原型:

size_tfread(void*buffer,size_tsize,size_tcount,FILE*fp);

size_tfwrite(void*buffer,size_tsize,size_tcount,FILE*fp);

功能:读/写数据块fread与fwrite一般用于二进制文件的输入/输出fread:从fp所指向的文件中读取count个块,每个块的长度为size个字节,存放到以buffer为首地址的内存中。其中buffer必须已经是由内存空间的。

fwrite:从以buffer为首地址的内存中读取count个块,每个块的长度为size个字节,写入到fp所指向的文件中。

返回值:成功,返回读/写的块数;出错或文件尾,返回0

说明:

buffer: 指向要输入/输出数据块的首地址的指针

size: 读/写的数据块的大小(字节数)

count: 要读/写的数据块的个数

fp: 要读/写的文件指针

示例:

#include

#include

typedefstructSTUDENT

{

charsNo[5];

charsName[20];

doublescore;

}STUDENT;

voidmain()

{

/*只对单个的时候*/

// intx=19;

// inty=0;

// FILE*fp=fopen("d:\\a.dat","w b");

// if(NULL==fp)

// {

// printf("Cannotopenthisfile!\n");

// exit(0);

相关主题