C语言 文件结束标志

文件分类:文件分为两类,文本文件和二进制文件。文本文件基于字符编码,常见编码有ASCII、UNICODE等等。


文本文件全是由字符构成,ASCII码的取值是从0~255.

#define EOF -1

其中-1不在ASCII码的取值范围中,所以在文本文件中EOF(-1)可作为文件结束的标准。

int main()
{
    //以只读的方式打开文件
    FILE * fp = fopen("../../d.txt", "r");
    if (!fp)
        return -1;

    char * buf = malloc(sizeof(char) * 1024);

    //EOF 判断字符是否到结尾
    while (feof(fp) != EOF)
    {
        memset(buf, 0, 1024);
        fgets(buf, 1024, fp);
        printf("%s", buf);
    }
    free(buf);
    fclose(fp);
}

二进制文件是由值构成,所以-1有可能就是文件内容所以,EOF(-1)不能作为二进制文件结束的标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。

这里写图片描述

int main()
{
    //以只读的方式打开文件
    FILE * fp = fopen("../../d.txt", "r");
    if (!fp)
        return -1;

    char * buf = malloc(sizeof(char) * 1024);

    //EOF 判断字符是否到结尾
    while (feof(fp) == 0)
    {
        memset(buf, 0, 1024);
        fgets(buf, 1024, fp);
        printf("%s", buf);
    }
    free(buf);
    fclose(fp);
}

注意:feof函数既可用以判断二进制文件又可用以判断文本文件。所以,直接使用feof函数判断所有文件结束标志即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值