C语言文件操作常用函数详解
- 格式:doc
- 大小:50.50 KB
- 文档页数:8
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);