【问题标题】:C - hex value 0x00 not being written to fileC - 十六进制值 0x00 未写入文件
【发布时间】:2018-09-17 00:11:30
【问题描述】:

我正在编写一个程序,我想将一些十六进制地址写入文件。问题是当我hexdump -C temp 文件时,我只看到bc ab 并且\x00 由于某种我不明白的原因没有写入文件。也许他们被识别为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.\n");
  exit(1);
}

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

【问题讨论】:

  • 使用开放模式"wb"
  • 如果你不希望它停在第一个\x00,也可以考虑使用fwrite而不是fprintf
  • 零值 (\x00) 是一个特殊值 (NULL),通常用于指示字符串的结尾。
  • @Marker 0x00 不为 NULL
  • @M.M,哎呀抱歉,空字符或字符串终止符怎么样?

标签: c hex hexdump


【解决方案1】:

您试图用 fprintf 的 %s 写入空字符。空字符是字符串终止符。不会这么写的。使用 fwrite 或 fputc。

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2014-03-16
    • 2013-07-11
    • 1970-01-01
    • 2012-06-17
    相关资源
    最近更新 更多