kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как проверить два *.txt на наличие совпадений по словам на C?

Есть два больших текстовых документа, необходимо проверить их на наличие одинаковых слов. Оба документа загружаются в память функцией fopen('text.txt', "r");. Думал сформировать 2 массива и в циклично прогонять 1 слово из 1 файла со всеми словами из 2 файла, 2 слово из 1 файла со всеми из 2 файла и так далее, не знаю как сформировать массив слов из входного потока.
  • Вопрос задан
  • 673 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для начала надо определиться, что значит "одинаковые слова". Если важен смысл слов, то это непросто (идти, иду, пойду, шёл - одно и то же слово).
Если слово берёте просто как цепочку символов, то всё проще. Открываете файл через open(name, O_RDONLY | O_BINARY), пишете подпрограмму, которая читает файл посимвольно, пропускает всё до первой буквы, читает пока не встретится небуквенный символ, возвращает слово. В основном цикле получаете из подпрограммы слово, записываете его в словарь. Если пишете на чистом C, то словарь придётся реализовать самому, например как дерево.
Затем также читаете второй файл и ищете слова в собранном словаре.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Гуглите по ключевому слову split string. Вам так же придется отсеять знаки препинания. Т.е. сплитаете по пробелу, потом в каждом слове удаляете ненужные символы. Потом это слово заносите в список, при условии что его там нет. Для еще большего ускорения - заносите хешсумму.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы