Ответ 1
Что представляют дополнительные данные
85fd 0804 0001
Возможно, некоторые случайные данные мусора.
как я могу предотвратить его появление?
fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
должен быть записан как:
fwrite(buff,sizeof(int16_t), sizeof(buff) / sizeof(buff[0]),rawf);
/* ^ ^^^^^^^^^^^^^^^ */
/* size of each object Count of objects */
/* (2) (3) */
/* or */
fwrite(buff, sizeof buf[0], sizeof buff / sizeof buff[0], rawf);
sizeof buff / sizeof buff[0]
получает длину массива в количестве объектов (или членов), а sizeof buff
задает размер массива в байтах.
Итак, вы читаете buff
и записываете его в файл и вызываете undefined поведение. В вашем случае вы видите случайные данные мусора, которые записываются в выходной файл.
В вашем случае sizeof
каждого элемента в buff
составляет 2 байта, а массив buff
имеет 3 члена, в результате чего общий размер составляет 6 байтов. Когда вы пишете fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
, 6 файлов по 2 байта записываются в файл, который не является тем, что вы хотите сделать.
Теперь вы пишете 6 данных типа (размер) int16_t
, начиная с buff[0]
i.e. buff[0..5]
до выхода. buff[0..2]
являются 0
, как ожидалось, и buff[3..5]
являются мусором.