基于C语言实现文件读取

1 C语言实现文件读取

/**
 * @brief 读取文件
 *
 * @param file_path 文件及其路径名
 * @param read_buff 读取buff指针
 * @param buff_len buff长度
 * @return int 0:读取成功 -1:打开文件失败 -2:文件大小超出buff允许大小 -3:读取文件失败
 */
int read_file(char *file_path, u8 *read_buff, u32 buff_len)
{
    FILE *file;
    long file_size;

    file = fopen(file_path, "rb+"); // 以只读方式(注意:必须是2进制方式,否则读取有误)打开文件
    if (file == NULL)
    {
        printf("open file %s fail.\r\n", file_path);
        return -1;
    }

    fseek(file, 0, SEEK_END); // 将文件指针移动到文件末尾处
    file_size = ftell(file);  // 获取文件大小
    if (file_size > (buff_len - 1))
    {
        printf("file size %d Byte > buff_len - 1(%d Byte).\r\n", file_size, buff_len - 1);
        fclose(file);
        return -2;
    }

    fseek(file, 0, SEEK_SET);                              // 将文件指针移动到文件开始处
    if (fread(read_buff, 1, file_size, file) != file_size) // 读取文件
    {
        printf("read file fail.\r\n");
        fclose(file);
        return -3;
    }
    read_buff[file_size] = 0x0; // 末尾添0
    fclose(file);

    return 0;
}

2 功能测试

新建1个名为file.txt的文本文件,里面随机写入一些数字及英文:
在这里插入图片描述
测试代码如下:

int main(void)
{
    u8 read_buff[10240];
    read_file("file.txt", read_buff, sizeof(read_buff));
    printf("%s", read_buff);
    return 0;
}

读取file.txt文件内容到read_buff数组,然后将read_buff数组内容以字符串形式打印出来。
将打印结果复制粘贴到另一个文本文件,使用比较工具比较2个文件内容是否一致:
在这里插入图片描述
可以看到,2个文件内容一致,说明读取文件函数read_file功能正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值