Я использую eclipse для c (версия: 2020-03 (4.15.0) Build id: 20200313-1211) и MinGW (версия 0.6.3-pre-20170905-1).
Я играл с fwrite()
в течение последних нескольких недель, в основном создавая файлы BMP, без каких-либо странных проблем.
Сейчас происходит что-то действительно странное, чего я совсем не понимаю: полученный файл имеет 2 лишние байты и, следовательно, изображение повреждено и не может быть отображено.
- Я прочитал значение, которое возвращает
fwrite()
и оно равно размеру, предназначенному для записи (384 в обоих случаях) - Я проверил данные указателя на
fwrite()
и внутреннего (FILE*)->_base
, и оба указывают на адрес с правильным содержимым, но отличается от того, что имеет сгенерированный файл.
И при удалении этих 2 байтов изображение отлично читается (я использую программное обеспечение HxD).
Это сгенерированный файл, 2 байта - это 0D
перед двумя 0A 00 00 00
(которые ширина и высота) - это дополнительные байты t что я понятия не имею, откуда они берутся, и поскольку где расположены, они компенсируют всю остальную информацию заголовка BMP и повреждают изображение!
Содержимое поврежденного файла BMP
В BMP нет ничего особенного, просто квадрат 10x10 пикселей с градиентом оттенков серого.
Заранее спасибо!