在C中将NULL char写入文件

超级黑客

我试图将一个char数组写入C中的BMP文件中。问题是,虽然文件需要0x00值,但似乎C在写入文件时将其解释为字符串的结尾,即NULL字符 我有什么办法可以覆盖它,让C完全依赖我所说的我希望传递的char数量?

用于将标头写入文件的代码(此功能在main中执行);

void writeFile(void){
    unsigned char bmp1[54] = {
    0x42, 0x4D, 0x36, 0x00, 
    0x0C, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x36, 0x00, 
    0x00, 0x00, 0x28, 0x00, 
    0x00, 0x00, 0x00, 0x02, 
    0x00, 0x00, 0x00, 0x02, 
    0x00, 0x00, 0x01, 0x00, 
    0x18, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 
    0x0C, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00
    };

    FILE *picFile = fopen("pic.bmp","w");
    fprintf(picFile, bmp1, 54);
    fclose(picFile);
}
放松

不用fprintf()写二进制数据,它当然会将其格式字符串解释为字符串。那就是它的作用!

使用fwrite(),然后使用以二进制模式打开文件"wb"

您可以sizeof用来计算数组的大小,而无需对值进行硬编码:

FILE *picFile = fopen("pic.bmp", "wb");
if(picFile != NULL)
  fwrite(bmp1, sizeof bmp1, 1, picFile);
fclose(picFile);

之所以有效,是因为它与的数组声明在同一个范围内bmp1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中将结构写入文件?

来自分类Dev

在C ++中将时间保存/写入txt文件

来自分类Dev

如何使用 C++ 中的 write 函数将 float 转换为 char 以写入文件?

来自分类Dev

在Stata中将标量写入文件

来自分类Dev

在python中将字节写入文件

来自分类Dev

在Torch中将表写入文件

来自分类Dev

在Stata中将标量写入文件

来自分类Dev

在C中将结构写入文件时,多余的零

来自分类Dev

如何在C中将单个位写入文件

来自分类Dev

如何在UWP C#中将类列表写入文件

来自分类Dev

在C中将结构写入文件时,多余的零

来自分类Dev

如何在C中将单个位写入文件

来自分类Dev

在C ++中将二进制搜索树写入文件

来自分类Dev

如何在 C# 中将学生对象写入文件

来自分类Dev

无法在 C++ 中将 json 数据写入文件

来自分类Dev

用c ++写入文件

来自分类Dev

用C写入文件

来自分类Dev

使C ++程序写入文件

来自分类Dev

用C ++写入文件

来自分类Dev

C:链表并写入文件

来自分类Dev

如何在C ++中将char转换为int?(文件处理)

来自分类Dev

在C ++中将二进制文件读入char数组

来自分类Dev

在C中将二进制文件转换为char

来自分类Dev

如何在PHP中将结构写入文件?

来自分类Dev

在python中将线程安全写入文件

来自分类Dev

在R中将png图写入pdf文件

来自分类Dev

在Go中将XML代码写入XML文件

来自分类Dev

在python中将列表写入txt文件

来自分类Dev

如何在Matlab中将位写入文件