I
I
Ivan Yakushenko2016-05-11 18:32:09
C++ / C#
Ivan Yakushenko, 2016-05-11 18:32:09

How to check two *.txt for word matches in C?

Есть два больших текстовых документа, необходимо проверить их на наличие одинаковых слов. Оба документа загружаются в память функцией fopen('text.txt', "r");. Думал сформировать 2 массива и в циклично прогонять 1 слово из 1 файла со всеми словами из 2 файла, 2 слово из 1 файла со всеми из 2 файла и так далее, не знаю как сформировать массив слов из входного потока.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
R
Rsa97, 2016-05-11
@kshnkvn

Для начала надо определиться, что значит "одинаковые слова". Если важен смысл слов, то это непросто (идти, иду, пойду, шёл - одно и то же слово).
Если слово берёте просто как цепочку символов, то всё проще. Открываете файл через open(name, O_RDONLY | O_BINARY), пишете подпрограмму, которая читает файл посимвольно, пропускает всё до первой буквы, читает пока не встретится небуквенный символ, возвращает слово. В основном цикле получаете из подпрограммы слово, записываете его в словарь. Если пишете на чистом C, то словарь придётся реализовать самому, например как дерево.
Затем также читаете второй файл и ищете слова в собранном словаре.

G
GavriKos, 2016-05-11
@GavriKos

Google for the keyword split string. You will also have to weed out punctuation marks. Those. split by space, then delete unnecessary characters in each word. Then put this word on the list, provided that it is not there. For even more acceleration - enter the hashsum.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question