Вот моя проблема.
Я написал скрипт на python, который сканирует файл и извлекает из него строки в большом массиве.
Я делаю что-то вроде:
while (delimiter #1 found)
search for the delimiter #2
if the string between #1 and #2 is not in the "final array", add it.
Мне потребовался 1 час, чтобы сделать скрипт на python.
Но это слишком медленно для больших файлов (8 минут для 400 файлов это слишком долго)
Поэтому я решил написать эту партию на C. Через один день я все еще не закончил ее.
Я уже смотрел на такие вещи, как отсортированные массивы ( сортированные массивы GNU C )
Я хотел бы проверить, есть ли строка между № 1 и № 2 уже в массиве строк, и если нет, добавьте ее.
Я думал, что будут очевидные функции, такие как добавление строки в предварительно отсортированный массив (и сохранение ее отсортированной) и / или добавление строки в предварительно отсортированный массив , если ее еще нет в .
Единственные решения, которые я нашел, это
- используйте lsearch ()
- используйте bsearch (), и, если не найден, добавьте его и пересортируйте массив ()
Вторая функция принимает возраст (qsort () слишком длинная), а первая становится слишком длинной после тысячи элементов (потому что они не отсортированы).
Вы знаете, где я мог бы посмотреть / что я мог сделать / какую библиотеку я мог бы использовать? Я предполагаю, что я не единственный на свете, кто хочет поместить строку в предварительно отсортированный строковый массив, только если его нет (и сохранить его отсортированным)! ;)
Большое спасибо
Olivier
Примечание: я хочу остаться C ANSI