Чтение большого файла построчно или сохранение его строк в массиве - PullRequest
6 голосов
/ 10 октября 2011

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

Ответы [ 2 ]

3 голосов
/ 10 октября 2011

Есть две функции, с которыми вам следует ознакомиться.

Первый - file(), который считывает весь файл в массив с каждой строкой в ​​качестве элемента массива. Это хорошо для более коротких файлов, и, вероятно, это не то, что вы хотите использовать в 100-строчном файле. Эта функция управляет собственным управлением файлами, поэтому вам не нужно явно открывать и закрывать файл самостоятельно.

Второй: fgets(), который можно использовать для чтения файла по одной строке за раз. Вы можете использовать это для цикла до тех пор, пока нужно обработать больше строк, и запустить обработку строк внутри цикла. Вам нужно будет использовать fopen(), чтобы получить дескриптор этого файла, вы можете самостоятельно отслеживать указатель файла для управления восстановлением (т. Е. Чтобы вам не пришлось перезапускать обработку с нуля, если что-то идет не так, как надо, и сценарий не работает ) и т. д.

Надеюсь, этого достаточно, чтобы вы начали.

1 голос
/ 10 октября 2011

Как насчет комбинации двух? Считайте 1000 строк в массив, обработайте его, удалите массив, затем прочитайте еще 1000 и т. Д. Контролируйте использование памяти и отрегулируйте, сколько вы читаете в массив за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...