Форум программистов, компьютерный форум CyberForum.ru

Особенности работы fread - C++

Восстановить пароль Регистрация
 
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
13.03.2013, 14:58     Особенности работы fread #1
Решаю типовую задачу: считывание заголовка bmp-файла (точечного рисунка). Однако у меня ничего не получалось. В ходе расследования выяснилось, что функция fread работает не так, как надо: она читает файл не в исходном виде, а так, как он лежит на жёстком диске:
[IMG]http://i53.***********/thumb/2013/0313/75/bcda56d3f27ac791a9cb855bdc265575.jpeg[/IMG]
На скриншоте - bmp-файл, открытый WinHex'ом, в консольном окошке - результат работы функции fread.
Итак, вопрос: что я делаю не так?
ЗЫ Bmp-файл весит 4854 байт, но на диске занимает 8192 байт. Может в этом причина?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 14:58     Особенности работы fread
Посмотрите здесь:

C++ fread
C++ Непонятки с fread
C++ fseek / fread
C++ Функция fread и матрицы
C++ fread с непонятной ошибкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
13.03.2013, 15:20     Особенности работы fread #2
Цитата Сообщение от fjay69 Посмотреть сообщение
ЗЫ Bmp-файл весит 4854 байт, но на диске занимает 8192 байт. Может в этом причина?
нет ,это файловая система. минимальный размер кластера у вас 4096 байт следственно так как 4864 > 4096 и меньше 8192 то памяти выделилось 8192

Добавлено через 1 минуту
Цитата Сообщение от fjay69 Посмотреть сообщение
выяснилось, что функция fread работает не так, как надо: она читает файл не в исходном виде, а так, как он лежит на жёстком диске:
он сахранён скорее всего бинарна а вы читаете его с помощью строковых функций
fjay69
 Аватар для fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
13.03.2013, 15:26  [ТС]     Особенности работы fread #3
Погуглив немного, таки решил проблему.
Во-первых, там где надо было использовать тип данных WORD и DWORD, я использовал short int и long int. Заменил.
Во-вторых, настроил упаковку данных с помощью #pragma pack (push, 1) ... #pragma pack (pop)
Пф...
Когда я считывал wav, таких траблов не было
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
13.03.2013, 18:39     Особенности работы fread #4
Цитата Сообщение от fjay69 Посмотреть сообщение
Во-первых, там где надо было использовать тип данных WORD и DWORD, я использовал short int и long int. Заменил.
на intel - short и word эквивалентны
Yandex
Объявления
13.03.2013, 18:39     Особенности работы fread
Ответ Создать тему
Опции темы

Текущее время: 14:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru