文件的结尾和文件开头
c语言中文件的结尾指的是文件的最后一个字符的下一个字符
例如:文件a.txt中有三个字符abc,即文件大小为3
那么文件的实际内容如下图.
echo -n abc > a.txt
#include<stdio.h>#include<stdlib.h>intmain(void){FILE*fp=fopen("a.txt","r");if(NULL==fp){perror("fopen"),exit(-1);}intc;while(!feof(fp)){//当文件指针第一次到达文件结尾处时,feof函数返回的是0.c=getc(fp);printf("c=%d\n",c);if(ferror(fp)){perror("ferror"),exit(-1);}}fclose(fp);return0;}
c=97
c=98
c=99
c=-1
所以正确做法应该是
#include<stdio.h>#include<stdlib.h>intmain(void){FILE*fp=fopen("a.txt","r");if(NULL==fp){perror("fopen"),exit(-1);}intc;while((c=getc(fp))!=EOF){printf("c=%d\n",c);if(ferror(fp)){perror("ferror"),exit(-1);}}return0;}
c=97
c=98
c=99
如何读出文件最后一个字符c,如下:
#include<stdio.h>#include<sys/types.h>#include<fcntl.h>intmain(void){FILE*fp=fopen("a.txt","r");fseek(fp,-1,SEEK_END);charc;c=getc(fp);printf("c=%d\n",c);fseek(fp,0,SEEK_END);printf("feof(fp)=%d\n",feof(fp));//此时在文件结尾处//即文件最后一个字符(即c字符)的下一个字符处//结果为0c=getc(fp);printf("c=%d\n",c);//c=-1printf("feof(fp)=%d\n",feof(fp));//结果为1return0;}
c=99
feof(fp)=0
c=-1
feof(fp)=1
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。