Answer the question
In order to leave comments, you need to log in
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
Для начала надо определиться, что значит "одинаковые слова". Если важен смысл слов, то это непросто (идти, иду, пойду, шёл - одно и то же слово).
Если слово берёте просто как цепочку символов, то всё проще. Открываете файл через open(name, O_RDONLY | O_BINARY)
, пишете подпрограмму, которая читает файл посимвольно, пропускает всё до первой буквы, читает пока не встретится небуквенный символ, возвращает слово. В основном цикле получаете из подпрограммы слово, записываете его в словарь. Если пишете на чистом C, то словарь придётся реализовать самому, например как дерево.
Затем также читаете второй файл и ищете слова в собранном словаре.
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 questionAsk a Question
731 491 924 answers to any question