C语言 二进制文件读写实例讲解 |
您所在的位置:网站首页 › c语言数据存储到dat文件 › C语言 二进制文件读写实例讲解 |
前言
二进制文件的读写是程序员们经常会遇到的一个场景,难是不难,但如果不熟悉的话,等到要用的时候还是会着急忙慌的。因此本文将结合一个具体的例子来介绍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 |