Найти повторяющиеся строки в файле и их количество - 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);
    }

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Переменная c инициализируется значением 1.
  2. В переменную str2 считывается строка из файла.
  3. Пока файл не будет прочитан до конца (это проверяется функцией feof), выполняются следующие действия:
    • В переменную str1 считывается следующая строка из файла.
    • Сравниваются две последние прочитанные строки. Если они не совпадают, то выполняются следующие действия:
    • Если значение переменной c больше 1, то выводится сообщение с количеством повторений и последней повторенной строкой. Значение переменной c сбрасывается в 1.
    • Строка из переменной str2 копируется в переменную str1.
    • Если строки совпадают, то значение переменной c увеличивается на 1.
  4. Если значение переменной c больше 1 после прочтения всего файла, то выводится сообщение с количеством повторений и последней повторенной строкой. Используемые функции:
    • fgets - считывает строку из файла в указанную переменную.
    • feof - проверяет, достигнут ли конец файла.
    • strcmp - сравнивает две строки.
    • strcpy - копирует строку из одной переменной в другую.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы