C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как прочитать двоичный файл?
** Mxn
  Отправлено: 03.03.2006, 11:53


Не зарегистрирован







Уважаемые господа! Подскажите!

char * TempString;
TFileStream * FILE = new TFileStream(OpenDialog->FileName, fmOpenRead);

TempString = (char *) malloc(FILE->Size + 1);
FILE->ReadBuffer(TempString, FILE->Size);

...

Таким образом прекрасно читаются текстовые файлы. Но при чтении двоичных файлов переменная TempString содержит не весь файл. Как можно прочитать весь двоичный файл???
Valdemar
Отправлено: 03.03.2006, 13:02


Мастер участка

Группа: Участник
Сообщений: 433



Возможно в двочном файле попадается символ "\0", который для С-строк является концом строки. Содержимое файла записывается в TempString полностью, но используя TempString вы имеете доступ только до первого символа "\0". Можно применять доступ по индексу: TempString[i], а для копирования использовать функции, использующие размер буфера, а не только указатель на буфер.

Отредактировано Valdemar — 03/03/2006, 13:13
Alex1000
Отправлено: 03.03.2006, 15:23


Ученик-кочегар

Группа: Участник
Сообщений: 13



FileOpen
FileRead
FileClose
Aptem
Отправлено: 03.03.2006, 16:51


Мастер участка

Группа: Участник
Сообщений: 349



Попробуй так:
CODE

FILE *stream;
int length = 1024;
char *data = new char[length];

stream = fopen ( "c:\\123.txt", "rb" );
fread ( data, length, 1, stream );
fclose ( stream );

Вернуться в Вопросы программирования в C++Builder