c语言中文件的结尾指的是文件的最后一个字符的下一个字符
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的惠州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!例如:文件a.txt中有三个字符abc,即文件大小为3
那么文件的实际内容如下图.
echo -n abc > a.txt
#include#include int main(void){ FILE* fp = fopen("a.txt","r"); if(NULL==fp){ perror("fopen"),exit(-1); } int c; while(!feof(fp)){ //当文件指针第一次到达文件结尾处时,feof函数返回的是0. c = getc(fp); printf("c=%d\n",c); if(ferror(fp)){ perror("ferror"),exit(-1); } } fclose(fp); return 0; }
c=97
c=98
c=99
c=-1
所以正确做法应该是
#include#include int main(void){ FILE* fp = fopen("a.txt","r"); if(NULL==fp){ perror("fopen"),exit(-1); } int c; while((c=getc(fp))!=EOF){ printf("c=%d\n",c); if(ferror(fp)){ perror("ferror"),exit(-1); } } return 0; }
c=97
c=98
c=99
如何读出文件最后一个字符c,如下:
#include#include #include int main(void){ FILE* fp = fopen("a.txt","r"); fseek(fp,-1,SEEK_END); char c; c = getc(fp); printf("c=%d\n",c); fseek(fp,0,SEEK_END); printf("feof(fp)=%d\n",feof(fp));//此时在文件结尾处 //即文件最后一个字符(即c字符)的下一个字符处 //结果为0 c = getc(fp); printf("c=%d\n",c); //c=-1 printf("feof(fp)=%d\n",feof(fp));//结果为1 return 0; }
c=99
feof(fp)=0
c=-1
feof(fp)=1
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。