Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 5
1

Проблема с чтением двоичных файлов

15.06.2008, 11:28. Показов 3947. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Если быть точным, то проблема с обнаружением конца двоичного файла.
Данные в файле могут принимать значение от 00h до FFh
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if((DumpFile = fopen(OpenDialog1->FileName.c_str(),"rb")) != NULL)
        
{
                
                i=0;
                while(feof(DumpFile)==0 || i<1024)
                {
                        StrDump[i]=fgetc(DumpFile);
                        i++;
                }
 
                fclose(DumpFile);
 
 }
такая конструкция не обнаруживает конца файла и после его достижения забивает массив до конца FFh (дальнейшая работа с данными удобна в виде массива unsigned char []).
В принципе можно было бы в настройках программы явно задать размеры читаемых файлов, благо этих размеров не очень большое кол-во (128, 256, 512, 1024, 2048 байт). Но это будет не совсем красиво и в последствии может вызвать проблему при необходимости работы с файлом нестандартного размера. Подскажите как еще можно отследить конец файла при чтении двоичных файлов (fgetc() тоже не видит конца файла).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2008, 11:28
Ответы с готовыми решениями:

Проблема с чтением форматированного текста из файла
Текстовый файл состоит из целых чисел, расположенных в две колонки. Для чтения данных из файла...

Шифрование. Проблема с чтением и записью файла.
Доброго времени суток. Программа шифрует и расшифровывает файлы с помощью сети Фейстеля. Только...

Чтение двоичных файлов
Пишу программу, с использованием файлов в формате bin. Нужно преобразовать содержимое в текст и...

Проблема с чтением двух файлов через FileStream
Я копирую файлы через FileStream Но вот беда Поврежденные файлы виснут на FileMode.Open и...

2
0 / 0 / 1
Регистрация: 15.07.2015
Сообщений: 6
15.06.2008, 15:46 2
Вобщем я делал двумя способами:
1. Если файл был создан текстовым редактором и открыт в режиме b(бинарного файла), то fscanf или fgetc возращают EOF если конец файла(или ошибка) так примерно выглядел один из циклов
C++
1
2
3
4
int flag=1;
  while (flag!=EOF)
    { flag=fscanf(f,"%d",&c); 
     ..............................}
2. Если же бинарный был создан в сразу в машинном представлении, то функции прямого ввода-вывода (fread(...) fwrite(....)) в себе возвращают кол во считанных/выведенных аргументов и поэтому я делал такую проверку:
C++
1
2
3
4
  int flag=1;
  while (flag!=0)
    { flag=fread(&c,sizeof(int),1,f)>0;/*т.е. пока кол-во считанных аргументов более нуля*/
      ....................................}
0
0 / 0 / 0
Регистрация: 15.06.2008
Сообщений: 5
15.06.2008, 18:36  [ТС] 3
Спасибо!
Уже переделал, теперь все работает как надо.
0
15.06.2008, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2008, 18:36
Помогаю со студенческими работами здесь

Проблема с чтением Excel файлов, русский текст выводит каракулями.
Помогите,pls, кто знает. Проблема состоит в следующем: я читаю из Excel файла русский текст,...

Проблема с чтением файла
При открытии файла функцией fopen и выводе на консоль отображается только первая строчка. Я так...

Проблема с чтением из файла!
Проблема такая: у меня есть текстовый файл, в котором на каждой новой строке написано число. Я хочу...

Проблема с чтением из файла
Подскажите пожалуйста в чем ошибка? Чтения не происходит. Нули в массиве как были, так и остаются....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru