文件的结尾和文件开头-创新互联

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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:文件的结尾和文件开头-创新互联
URL分享:http://pwwzsj.com/article/ddhgsj.html