Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение файла

1.9K
14 марта 2006 года
Rad87
123 / / 14.12.2005
Мне необходимо прочесть файл(не обязательно текстовый). Но у меня возникла проблема с двоичными фалами например с файлом ворда. Я посмотрел его по битно с помощью ультраедита и увидел что после 8 бита там следует группа нулей.А так как я использую команды
CFile f;
....
char szBuffer[1024];
f.Read( szBuffer,1000);

то возникли проблемы. Я думаю что проблема в этих нулях который char принимает за конец строки.

Как мне обойти эту проблему?
2.4K
15 марта 2006 года
dinasok51
219 / / 12.11.2005
Цитата:
Originally posted by Rad87
Мне необходимо прочесть файл(не обязательно текстовый). Но у меня возникла проблема с двоичными фалами например с файлом ворда. Я посмотрел его по битно с помощью ультраедита и увидел что после 8 бита там следует группа нулей.А так как я использую команды
CFile f;
....
char szBuffer[1024];
f.Read( szBuffer,1000);

то возникли проблемы. Я думаю что проблема в этих нулях который char принимает за конец строки.

Как мне обойти эту проблему?


Открой файл в двоичном формате

 
Код:
f.Open( pFileName, CFile::modeRead | CFile::typeBinary );
1.9K
15 марта 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by dinasok51
Открой файл в двоичном формате
 
Код:
f.Open( pFileName, CFile::modeRead | CFile::typeBinary );


Эффект тот же - читается только до нулей.

2.4K
15 марта 2006 года
dinasok51
219 / / 12.11.2005
Цитата:
Originally posted by Rad87
Эффект тот же - читается только до нулей.


 
Код:
UINT uiBytesRead = f.Read( szBuffer,1000);

Сколько читаешь? и как дальше обрабатываешь?
Как строки или как последовательност байтов?

Если как строки, то это проблема обработка, а не чтения из файла.
1.9K
15 марта 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by dinasok51
 
Код:
UINT uiBytesRead = f.Read( szBuffer,1000);

Сколько читаешь? и как дальше обрабатываешь?
Как строки или как последовательност байтов?

Если как строки, то это проблема обработка, а не чтения из файла.



Мне нужно прочитанные данные переслать через соккеты другому компу. Помоему проблема в типе char но без использования чара я обойтись не могу.

А как обрабатывать "как последовательност байтов"? Может как нибудь вывернусь этим способом. :)

3
15 марта 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Rad87
Мне нужно прочитанные данные переслать через соккеты другому компу. Помоему проблема в типе char но без использования чара я обойтись не могу.

А как обрабатывать "как последовательност байтов"? Может как нибудь вывернусь этим способом. :)


А как ты понял, что читается только до нулей?

534
15 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Rad87
Мне нужно прочитанные данные переслать через соккеты другому компу. Помоему проблема в типе char но без использования чара я обойтись не могу.

Спроецируй ты файл в память и можешь его через сокеты прям целиком отправлять как есть. И работать с ним будешь как с обычным блоком в памяти, что, на мой взгляд, гораздо удобней, чем постоянная буферизация вручную.

1.9K
15 марта 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by Green
А как ты понял, что читается только до нулей?


Посмотрел что находится в szBuffer и посмотрел через UltraEdit в шеснадцатеричном виде на документ и сравнив увиденное понял. :)

1.9K
15 марта 2006 года
Rad87
123 / / 14.12.2005
Цитата:
Originally posted by HarryAxe
Спроецируй ты файл в память и можешь его через сокеты прям целиком отправлять как есть. И работать с ним будешь как с обычным блоком в памяти, что, на мой взгляд, гораздо удобней, чем постоянная буферизация вручную.


Подскажи пожалуйста какие функции при этом используются

3
15 марта 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Rad87
Посмотрел что находится в szBuffer и посмотрел через UltraEdit в шеснадцатеричном виде на документ и сравнив увиденное понял. :)


А как ты посмотрел, что находится в szBuffer?
В дебагере глянул содержимое переменных?
Ну так дебагер, воспринимая szBuffer как C-string, и показал тебе содержимое до заверщаещего по его мнению (мнению дебагера) нуля.
Смотри дамп памяти.

534
16 марта 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Rad87
Подскажи пожалуйста какие функции при этом используются

Код:
HANDLE hFile = CreateFile(tszPath,
        GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        NULL
    );
    ASSERT(hFile != INVALID_HANDLE_VALUE);
    HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
    ASSERT(hMap);
    LPVOID lpFile = MapViewOfFile(hMap, FILE_MAP_READ ,0, 0, 0);
    DWORD dwFileSize = GetFileSize(hFile, NULL);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог