Показать сообщение отдельно
Старый 17.04.2011, 23:25   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Вывод строк из файла. Как?

Если строки не очень большие - можно сделать чуть по говнокодерскому - записывать их блоками константной длины. Потом тупо читать целый блок и записвать с него данные в строку. Но это весьма медленно, зато при огромных размерах файла ускорит индексацию (позиция n-ной строки: n*STR_SIZE, где STR_SIZE - размер блока)
Но можно сделать по-другому, более экнонмно:
первый int(readint()) - длина строки, потом идут байты этой строки последовательно. Потом опять размер следующей строки и т.д. При поиске нужной строки просто берем первый int, прибавляем к позиции файла его, смещаем указатель в файле, потом опять читаем размер следующей строки, прибавляем, смещаем, и так пока не найдем нужную строку 6)
(Offline)
 
Ответить с цитированием