您的位置:首页 > 其它

文件的结尾和文件开头

2017-01-02 21:52 274 查看
c语言中文件的结尾指的是文件的最后一个字符的下一个字符
例如:文件a.txt中有三个字符abc,即文件大小为3
那么文件的实际内容如下图.



echo -n abc > a.txt

#include <stdio.h>
#include <stdlib.h>

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 <stdio.h>
#include <stdlib.h>

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 <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  EOF