Как использовать fwrite для записи данных 0xf0f0f0f0 - PullRequest
2 голосов
/ 31 декабря 2011

Мне нужно использовать fwrite, чтобы записать разделитель = 0xf0f0f0f0 в двоичный файл. Это необходимо сделать таким образом, чтобы 0xf0f0f0f0 появлялся в начале файла при просмотре в xxd в UNIX. Я сейчас так делаю,

  unsigned int delim[1];
  delim[1] = 0xf0f0f0f0;
  fwrite(delim, 4, 1, destination);

Но это явно не работает, так как xxd показывает это в начале файла:

  0000000: 90c9 49ac

Ответы [ 2 ]

10 голосов
/ 31 декабря 2011

Вероятно, должно быть

 unsigned int delimnum = 0xf0f0f0f0;
 fwrite(&delimnum, sizeof(delimnum), 1, destination);

Или хотя бы использовать delim[0], поскольку индексирование массива начинается с 0.

5 голосов
/ 31 декабря 2011

This:

unsigned int delim[1];

- это массив, содержащий один элемент.

This:

delim[1] = 0xf0f0f0f0;

относится ко второму элементу в массиве из одного элемента,который не является правильным кодом.

Измените delim[1] на delim[0], если вы хотите поместить что-то в массив из одного элемента.

...