C语言 二进制文件读写实例讲解

您所在的位置:网站首页 c语言数据存储到dat文件 C语言 二进制文件读写实例讲解

C语言 二进制文件读写实例讲解

2023-08-13 07:09| 来源: 网络整理| 查看: 265

前言

二进制文件的读写是程序员们经常会遇到的一个场景,难是不难,但如果不熟悉的话,等到要用的时候还是会着急忙慌的。因此本文将结合一个具体的例子来介绍C语言中的二进制文件读写,这也是我自我学习的一个记录。

一、函数介绍

在本例中,我们尝试在一个文件中写入10个字节的数据,其中每个字节均为0xFF,然后我们再将数据读取出来。为了完成这个任务,我们需要三个函数,我们一个个来看。

第一个函数为fopen(),它的函数原型如下 FILE *fopen(const char *__restrict__ _Filename, const char *__restrict__ _Mode)

顾名思义,该函数用于打开一个文件,第一个参数代表文件名,第二参数代表访问模式,比如读r、写w,它的返回值是一个指针。(更多的访问模式本处就不一一列举了,大家可自行查阅)

第二个函数为fwrite(),它的函数原型为 size_t fwrite(const void *__restrict__ _Str, size_t _Size, size_t _Count, FILE *__restrict__ _File)

该函数的作用是往文件中写入数据。__restrict__ _Str为写入数据块的首地址,参数_Size与_Count决定了写入的数据长度,_Size是每个元素的长度,_Count是元素的个数,怎么理解呢,如下图所示,总数据被分为了3块,每块1个字节。

1B1B1B

__restrict__ _File就是我们使用fopen()之后得到的文件指针,我们通过它往文件里写数据。

第三个函数为fread(),它的函数原型如下所示 size_t fread(void *__restrict__ _DstBuf, size_t _ElementSize, size_t _Count, FILE *__restrict__ _File)

该函数的作用是从文件中读取数据。参数的含义与fwrite()类似,第一个参数为目标地址,也就是你想把数据存在哪里,参数_ElementSize、_Count、__restrict__ _File的含义与fwrite()中的一样,只是__restrict__ _File指向的是你想读取的文件。

二、代码

有了上面的三个函数,我们就可以编写代码来实现我们的例程了。代码如下:

#include int main() { // 文件指针pd FILE *pd = NULL; unsigned __int8 a[10]; unsigned __int8 b[10]; int i; for (i = 0; i printf("b[%d] = 0x%x\n", i, b[i]); } fclose(pd); }

生成test.bin文件后,我们可以用二进制查看工具看一下文件里的数据,看是不是和我们预期的一样。这里给大家推荐一个二进制文件查看器: Free Hex Editor Neo 用它就可以打开我们的test.bin了。

最后,欢迎大家交流指正~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3