C - 十六进制值0x00未写入文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C - 十六进制值0x00未写入文件相关的知识,希望对你有一定的参考价值。

我正在编写一个程序,我想在文件中写一些十六进制地址。问题是,当我hexdump -C temp文件,我只看到bc abx00没有写入文件由于某些我不明白的原因。也许他们被认为是EOF角色?任何帮助都非常感谢。

File *file;
char *buffer, *ptr;

ptr = buffer;
*(ptr++) = 'xbc';
*(ptr++) = 'xab';
*(ptr++) = 'x00';  // problem
*(ptr++) = 'x00';

file = fopen("temp", "w");
if (file == NULL) {
  fprintf(stderr, "Opening file failed.
");
  exit(1);
}

fprintf(file, "%s", buffer);
fclose(file);
答案

您尝试使用fprintf的%s写入空字符。空字符是字符串终止符。它不会那样写。使用fwrite或fputc。

以上是关于C - 十六进制值0x00未写入文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA 创建和写入 txt 文件

[CISCN 2019 初赛]Love Math

java把01字符串当二进制写入文件

莫名其妙的异常003:“.”(十六进制值 0x00)是无效的字符

C 语言向文件写入二进制信息

交换二进制文件中的偏移值