C - шестнадцатеричное значение 0x00 не записывается в файл - PullRequest
0 голосов
/ 17 сентября 2018

Я пишу программу и хочу записать в файл несколько шестнадцатеричных адресов. Проблема в том, что когда я 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);

1 Ответ

0 голосов
/ 17 сентября 2018

Вы пытались написать нулевые символы с помощью fprintf% s. Нулевой символ - это терминатор строки. Так не будет написано. Используйте fwrite или fputc.

...