Какой метод использовать при поиске строки в файле - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть файл с путями к файлам:

/my/path1
/my/path11
/my/path12
/my/path13

Структура файла такова, что он имеет отдельные пути в каждой строке. Все, что я хочу сделать, - это искать наличие строки /my/path1 или любой другой в указанном файле много раз

Я мог бы подумать о 2 методах.

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

  2. Загрузить содержимое в буфер и найти его с помощью буфера. Но так как я не могу контролировать размер файла, я должен быть здесь осторожен.

Каков наилучший подход? Я работаю в Unix. Есть ли какие-либо команды библиотеки в C, которые я могу использовать для этой цели? Или как я могу выполнить ту же задачу, используя awk в коде C.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Если вы используете stdio, это сделает буферизацию для вас.Вы можете изменить его работу, используя функцию setvbuf для буферизации более чем одной строки.getline может использоваться для проверки построчно.

0 голосов
/ 09 февраля 2012

Я думаю, что загрузка всех файлов в память не очень хорошая идея. Полагаю, использование fgets и strcmp - лучший способ.

...