Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 19:37   #1
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
Лампочка Компрессор

Доброго времени суток. Поставил перед собой задачу написать компрессор для сжатия файлов.
Есть готовая функция, которая получает char* и формирует дерево кодирования и прочее.
Код:
void HafCode(char*)
Теперь сам вопрос. Как лучше считать файл, чтобы он, во-первых, не грузился целиком в оперативную память, во-вторых, чтобы можно было передать в мою функцию?
Ну или может быть стоит функцию мне переделать?:con fused:
alexey_kip вне форума Ответить с цитированием
Старый 18.12.2012, 20:31   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

При параметрах вашей функции - никак, вы даже целиком не сможете передать файл. Нужен как минимум размер буфера. Для работы с куском файла нужно предвидеть возможност послать сигнал компрессору, что данные закончились.
waleri вне форума Ответить с цитированием
Старый 19.12.2012, 14:54   #3
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Спасибо,Wlery, попробую поступить иначе - передать в функцию не сам файл, а FILE* и читать файл уже в самой функции HafCode
alexey_kip вне форума Ответить с цитированием
Старый 19.12.2012, 17:43   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Лучше сделать буффер и размер буффера... Так или иначе, гдето внутри этот размер вычисляется
waleri вне форума Ответить с цитированием
Старый 19.12.2012, 18:44   #5
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Цитата:
Лучше сделать буффер и размер буффера... Так или иначе, гдето внутри этот размер вычисляется
waleri, я не совсем понял, что вы имеете в виду
alexey_kip вне форума Ответить с цитированием
Старый 19.12.2012, 18:46   #6
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

У меня возникла новая проблема. Если считываю текстовый файл - проходит по всему фалу, если любой другой, то перестает считывать гораздо раньше конца
alexey_kip вне форума Ответить с цитированием
Старый 19.12.2012, 18:46   #7
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Использую
Код:
while(!feof(file))
{...
}
alexey_kip вне форума Ответить с цитированием
Старый 22.12.2012, 15:47   #8
alexey_kip
Форумчанин
 
Регистрация: 19.11.2011
Сообщений: 198
По умолчанию

Никто не знает как поступить в этом случае?:-(
alexey_kip вне форума Ответить с цитированием
Старый 22.12.2012, 16:31   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Открывайте файл в двоичном режиме
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц