Найти повторяющиеся строки в файле и их количество - C (СИ)
Формулировка задачи:
Здравствуйте! Есть текстовый файл с ненормированными длинами строк. Надо найти повторяющиеся строки и их количество. Важный момент - файл уже отсортирован и имеет вид:
ABC 123
ABC 123
ABCF
TWR WER TER
TW ET2342
TW ET2342
TW ET2342
То есть, повторяющиеся строки идут подряд. На выходе проги получить надо такое:
ABC 123 - 2
TW ET2342 - 3
Суть моего кода в том, что я сравниваю по паре строк и минус как раз тоже в этом)
Подскажите, как сделать, чтобы считало больше двух повторений?
Спасибо.
while(!feof(fp)) { c=1; fgets(str1, 126, fp); fgets(str2, 126, fp); if(stpcpy(srt1,str2)==0) { c++; printf("%d - %s",c,str2); } }
Решение задачи: «Найти повторяющиеся строки в файле и их количество»
textual
Листинг программы
c=1; fgets(str2, 126, fp); while(!feof(fp)) { fgets(str1, 126, fp); if(strcmp(str2,str1)) { if(c>1) { printf("%d - %s",c,str2); c=1; } strcpy(str2,str1); } else { c++; } } if(c>1) { printf("%d - %s",c,str2); }
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Переменная
c
инициализируется значением 1. - В переменную
str2
считывается строка из файла. - Пока файл не будет прочитан до конца (это проверяется функцией
feof
), выполняются следующие действия:- В переменную
str1
считывается следующая строка из файла. - Сравниваются две последние прочитанные строки. Если они не совпадают, то выполняются следующие действия:
- Если значение переменной
c
больше 1, то выводится сообщение с количеством повторений и последней повторенной строкой. Значение переменнойc
сбрасывается в 1. - Строка из переменной
str2
копируется в переменнуюstr1
. - Если строки совпадают, то значение переменной
c
увеличивается на 1.
- В переменную
- Если значение переменной
c
больше 1 после прочтения всего файла, то выводится сообщение с количеством повторений и последней повторенной строкой. Используемые функции:fgets
- считывает строку из файла в указанную переменную.feof
- проверяет, достигнут ли конец файла.strcmp
- сравнивает две строки.strcpy
- копирует строку из одной переменной в другую.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д