Linux 下通过C 语言把 C语言的数组写为二进制文件

功能描述

  • 有个一个C 语言的数组,比如把一个二进制文件 dump 成一个 C语言的数组,然后输出到开发板的串口终端,想再把这个二进制的C 语言数组复制到电脑上,写为二进制文件。

  • 二进制的C 语言的数组:使用 0x00~0xFF 表示的数组,格式如下:

unsigned char buf_0xa0000000_512[] = {
    0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x05, 0x00, 0xa0,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0x58, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x2c, 0x20, 0x64, 0x65,
    0x62, 0x75, 0x67, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x20,
    0x3d, 0x20, 0x30, 0x78, 0x61, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x64, 0x65,
    0x62, 0x75, 0x67, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74,
    0x68, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x64, 0x65, 0x62, 0x75,
    0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x33, 0x0a, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xa0, 0x20, 0x01, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x2c, 0x20, 0x73, 0x68
};

目标

  • 把C 语言的二进制 数组写为二进制的文件

  • 由于数组的每个值,如 0x6e,就表示二进制的一个字符,所以数组的内容不需要任何的格式转换,直接存储到文件即可。

  • 为何有这么个需求?一般嵌入式硬件开发板中,没有很好的导出文件的方法,当然可以尝试使用 YModem 之类的串口终端传输文件,如果没有这些工具,则把开发板中的文件导出来,比较的繁琐。

  • 当前的思路是:把开发板的二进制文件, dump 拼接为成一个 C 语言的数组,再把这个 C语言的数组复制出来,写成文件。

相关代码

  • 由于思路比较简单,所以操作起来也不难,就是创建文件,写文件而已。

  • C语言的字符数组(二进制数组),可以直接写入到文件,当然 dump C 语言数组时,留意 内存的大小端即可

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>

unsigned char buf_0xa0000000_512[] = {
    0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x05, 0x00, 0xa0,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0x58, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x2c, 0x20, 0x64, 0x65,
    0x62, 0x75, 0x67, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x20,
    0x3d, 0x20, 0x30, 0x78, 0x61, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x64, 0x65,
    0x62, 0x75, 0x67, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74,
    0x68, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x64, 0x65, 0x62, 0x75,
    0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x33, 0x0a, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xa0, 0x20, 0x01, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x2c, 0x20, 0x73, 0x68,
    0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x39, 0x61,
    0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2c, 0x20, 0x6d, 0x6d, 0x69, 0x6f, 0x5f, 0x62, 0x61, 0x73,
    0x65, 0x3a, 0x20, 0x30, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63,
    0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x20, 0x2d, 0x31, 0x0a, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xa0, 0xa0, 0x01, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x3a, 0x20, 0x64, 0x65,
    0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20,
    0x33, 0x2c, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x6f, 0x66,
    0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
    0x5f, 0x69, 0x72, 0x71, 0x5f, 0x62, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x2c, 0x20, 0x64, 0x65,
    0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x72, 0x71, 0x20, 0x3d, 0x20, 0x34, 0x0a, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0xa0, 0x00, 0x02, 0x00, 0xa0,
    0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x3a, 0x20, 0x68, 0x6f,
    0x73, 0x74, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x33, 0x2c,
    0x20, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
    0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x62,
    0x69, 0x74, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0xa0, 0x60, 0x02, 0x00, 0xa0,
    0x68, 0x6f, 0x73, 0x74, 0x2f, 0x64, 0x73, 0x70, 0x20, 0x61, 0x64, 0x64, 0x72, 0x3a, 0x20, 0x30,
    0x78, 0x38, 0x66, 0x66, 0x30, 0x30, 0x30, 0x63, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x38, 0x66, 0x66,
    0x30, 0x30, 0x32, 0x38, 0x30, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xa0, 0xc0, 0x02, 0x00, 0xa0,
    0x78, 0x72, 0x70, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x2c,
    0x20, 0x30, 0x78, 0x33, 0x33, 0x31, 0x30, 0x32, 0x61, 0x32, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x38,
    0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0xa0, 0x20, 0x03, 0x00, 0xa0,
    0x78, 0x72, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x72,
    0x71, 0x2c, 0x20, 0x30, 0x78, 0x33, 0x33, 0x31, 0x30, 0x32, 0x61, 0x30, 0x63, 0x2c, 0x20, 0x30,
    0x78, 0x34, 0x30, 0x30, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0xa0, 0x80, 0x03, 0x00, 0xa0,
    0x5b, 0x56, 0x43, 0x44, 0x5d, 0x20, 0x64, 0x6f, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
    0x6b, 0x65, 0x3a, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x08, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0xa0, 0xe0, 0x03, 0x00, 0xa0,
    0x1b, 0x5b, 0x33, 0x36, 0x3b, 0x32, 0x32, 0x6d, 0x49, 0x2f, 0x62, 0x73, 0x74, 0x2d, 0x63, 0x76,
    0x20, 0x20, 0x20, 0x5b, 0x74, 0x69, 0x63, 0x6b, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
    0x30, 0x32, 0x31, 0x5d, 0x20, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x42, 0x53, 0x54, 0x20, 0x43,
    0x56, 0x21, 0x1b, 0x5b, 0x30, 0x6d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x09, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0xa0, 0x40, 0x04, 0x00, 0xa0,
    0x78, 0x72, 0x70, 0x5f, 0x69, 0x72, 0x71, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x2c,
    0x20, 0x30, 0x78, 0x33, 0x33, 0x31, 0x30, 0x32, 0x61, 0x32, 0x38, 0x2c, 0x20, 0x30, 0x78, 0x38,
    0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xa0, 0xa0, 0x04, 0x00, 0xa0,
    0x72, 0x75, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x6f, 0x70,
    0x3a, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65,
    0x73, 0x74, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0xa0, 0x00, 0x05, 0x00, 0xa0,
    0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20,
    0x38, 0x39, 0x30, 0x2c, 0x20, 0x30, 0x78, 0x39, 0x61, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0a,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x00, 0xa0, 0x60, 0x05, 0x00, 0xa0,
    0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20,
    0x38, 0x39, 0x31, 0x2c, 0x20, 0x36, 0x34, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x52, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xa0, 0xc0, 0x05, 0x00, 0xa0,
    0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20,
    0x39, 0x30, 0x33, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x60, 0x05, 0x00, 0xa0, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};

int main()
{
    int fd = open("file.bin",O_WRONLY | O_CREAT, 0600);
    if (fd < 0)
    {
       printf("create file error, fd = %d\n", fd);
    }

    printf("fd=%d\n",fd);

    write(fd,buf_0xa0000000_512, sizeof(buf_0xa0000000_512));

    close(fd);

    return 0;
}

编译与运行

  • 在 Linux 平台 如 ubuntu 上,使用 gcc 进行编译

  • 编译方法:$ gcc log_write.c -o log_write

在这里插入图片描述

  • 运行方法: $ ./log_write,运行后查看一下,发现生成了相应的二进制的文件

  • 可以使用二进制的工具软件查看生成的二进制文件内容

  • 验证发现可以把C 语言数组 正常的写入到文件

在这里插入图片描述

小结

  • 文件的一些操作在Linux C 语言下其实不复杂,一般是 open write close 的 文件 posix API 的操作

  • 打开一个文件, read 出来的内容,其实就是 二进制的字符数组

  • 可以通过把二进制文件的每个字节,转换成 十六进制表示,如 3 -> 0x30,这样可以做到在没有文件传输方式的情况下,把二进制文件通过数组的方式,一点点捞出来。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 不,C语言的fwrite函数不仅可以用于写二进制文件,也可以用于写文本文件。 fwrite函数是C语言标准库中的一个输出函数,主要用于将数据以二进制形式写入文件。在进行二进制文件写入时,fwrite函数将内存中的数据以字节的形式写入文件,可以灵活地写入任何类型的数据。 然而,fwrite函数也可以用于写文本文件。当以文本模式打开文件时(例如使用fopen函数的"wt"模式),fwrite函数会将数据以字符的形式写入文件。这意味着,fwrite函数可以将字符串、字符数组等文本数据写入文件。 当使用fwrite函数写入文本文件时,需要注意的是,文本文件中的换行符可能会因为操作系统的不同而有所差异。在Windows系统中,换行符为"\r\n",而在Unix/Linux系统中,换行符为"\n"。因此,在不同系统中打开时,可能需要进行换行符的适配。 总的来说,C语言的fwrite函数不仅适用于写入二进制文件,也可以用于写入文本文件。根据需求选择正确的模式并进行相应的操作。 ### 回答2: C语言的fwrite函数可以用于向文件中写入任意类型的数据,既可以是二进制数据,也可以是文本数据。 fwrite函数的原型为:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); 其中,ptr是要写入的数据的指针,size表示每个数据项的字节数,count表示要写入的数据项的个数,stream表示写入的文件指针。 fwrite函数会按照指定的size和count将数据写入文件。如果写入的是二进制数据,它们将按照原样存储在文件中;如果写入的是文本数据,fwrite函数会将其以ASCII码的形式写入文件。 但需要注意的是,当写入文本数据时,使用fwrite函数无法进行换行操作,因此适合用于写入纯文本内容较短的文件。对于需要格式化输出的文本内容,建议使用fprintf函数。 总结起来,虽然fwrite函数在实际使用中常用于写入二进制数据,但它并不仅限于此,也可以用于写入文本数据。 ### 回答3: 不,C语言的fwrite函数可以用于向文件中写入任意类型的数据,包括二进制数据和文本数据。fwrite函数的原型如下: size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); 其中,ptr为指向要写入数据的指针,size为每个数据块的大小,count为数据块的个数,stream为指向要写入的文件对象的指针。 当需要向文件中写入二进制数据时,可以直接传入一个指向数据块的指针,并指定每个数据块的大小和数量。例如,以下代码将写入一个int类型的数据到文件中: ```c int data = 123; FILE *file = fopen("binary_file.bin", "wb"); if (file != NULL) { fwrite(&data, sizeof(int), 1, file); fclose(file); } ``` 另外,如果需要向文件中写入文本数据,可以将数据转换为字符串,然后使用fwrite函数写入。例如,以下代码将写入一个字符串到文件中: ```c char text[] = "Hello, World!"; FILE *file = fopen("text_file.txt", "w"); if (file != NULL) { fwrite(text, sizeof(char), sizeof(text), file); fclose(file); } ``` 所以,可以说C语言的fwrite函数不仅可以写入二进制文件,也可以写入文本文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张世争

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值