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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
#1

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

13.03.2013, 14:58. Просмотров 495. Ответов 3
Метки нет (Все метки)

Решаю типовую задачу: считывание заголовка 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 с непонятной ошибкой
C++ Функции fread() и fwrite()
C++ Функция fread не считывает данные
Особенности работы деструктора C++
Поиск ошибки в fread C++
Нужен совет fread C++
C++ Особенности и порядок работы с указателями, обмен данными между динамическими массивами
Параметры функции fread C++

Искать еще темы с ответами

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

Добавлено через 1 минуту
Цитата Сообщение от fjay69 Посмотреть сообщение
выяснилось, что функция fread работает не так, как надо: она читает файл не в исходном виде, а так, как он лежит на жёстком диске:
он сахранён скорее всего бинарна а вы читаете его с помощью строковых функций
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,587
Записей в блоге: 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
Ответ Создать тему
Опции темы

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