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

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

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

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

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

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

Особенности работы деструктора - C++
Есть вот такой код. Все работает.#include <iostream> #include <iomanip> using namespace std; class complex{ private: ...

Особенности и порядок работы с указателями, обмен данными между динамическими массивами - C++
Написать программу обмена данными между двумя динамическими массивами,как можно проще. Заранее большое спасибо)

fread - C++
Подскажите пожалуйста, как можно записать в структура данные из файла используя fread, просто все записывается в одну кучу и только одна...

Fread и fout? - C++
Здравствуйте. Была поставлена предо мной задача: Сделать структуру, которая через меню будет выполнять некоторые действия с файлами....

Непонятки с fread - C++
Добрый день. Столкнулся с такой проблемой: читаю обычный текстовый файл, однако помимо его содержания мне выдает еще ==**** в конце (причем...

fseek / fread - C++
Всем привет! Такой вопрос возник. Есть строка, состоящая из нескольких "записей" в файле (буквы + числа). Нужно с помощью функций...

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

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

Функции fread() и fwrite() - C++
Меня интересует что это за "счётчик" в этих функциях fwrite( massiv, *size_int * sizeof(unsigned int), 1, fp); <= в большинстве примеров...

fread с непонятной ошибкой - C++
Вот фрагмент кода, который вызывает ошибку: FILE *t = fopen("squares.db","r"); if (!t) { char log;...

Функция fread и матрицы - C++
Подскажите, как правильно исп. эту ф-ию для считывания информации из файла в матрицу. Есть маленькая программка, которая никак не хочет...

Поиск ошибки в fread - C++
У меня возникла ошибка. Мне нужно прочесть данные с бинарных файлов. Бинарный файл "a.dat" содержит в себе числа '7 0 1 0 1 0 1 0 2 6 2',...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.03.2013, 18:39
Ответ Создать тему
Опции темы

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