Строки и работа с текстовым документом - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Тип мне нужно найти наименьшую строку в текстовом документе и изменить ее. В общем я застрял на том, что нужно сравнить 2 строки одного текстового файла, для того чтобы найти наименьший (Строк в текст. документе 30) и заменить его на любую фразу. Получившийся текст. файл нужно сохранить в под другим именем. Вот что я набросал.
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL, "rus");
    int a;
    FILE *file;
    char str1[200]; // строка для сравнения
    char str2[200]; // строка для сравнения
    char minstr[100]; // мин по размеру строка
    file = fopen("Miku.txt", "a+");
    fgets(str2, 1023, file);
    while (!feof(file))
    {
        fgets(str1, 1023, file);
        printf("%s", str1);
    }
    printf("\n---------------------------------\n");
    fprintf(file, "текст для замены");
    fclose(file);
    return 0;
}
НАШЕЛ МИНИМАЛЬНУЮ СТРОКУ! КАК МНЕ ИЗМЕНИТЬ ЕЕ В ТЕКСТОВОМ ДОКУМЕНТЕ ?!
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL, "rus");
    int a;
    FILE *file;
    char str1[200];
    char str2[200];
    char minstr[200];
    file = fopen("Miku.txt", "a+");
    fgets(str2, 1023, file);
    strcpy(minstr, str2);
    while (!feof(file))
    {
        fgets(str1, 1023, file);
        printf("%s", str1);
        if (strlen(str1) < strlen(minstr))
        {
            strcpy(minstr, str1);
        }
 
    }
    printf("\n---------------------------------\n");
    printf("%s\n", minstr);
    fclose(file);
    return 0;
}

Решение задачи: «Строки и работа с текстовым документом»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL, "rus");
    int a;
    FILE *file;
    FILE *file2;
    char str1[200];
    char str2[200];
    char minstr[200];
    char change[20] = "С Новым Годом!";
    file = fopen("Miku.txt", "a+");
    file2 = fopen("Miku2.txt", "a+");
    fgets(str2, 1023, file);
    strcpy(minstr, str2);
    int i = 1, k;
    while (!feof(file))
    {
        fgets(str1, 1023, file);
        printf("Строка %d: %s", i, str1);
        fputs(str1, file2);
        if (strlen(str1) < strlen(minstr))
        {
            strcpy(minstr, str1);
            k = i;
        }
        i++;
    }
    printf("\n---------------------------------\n");
    printf("Строка %d: %s\n", k, minstr);
    fclose(file);
    fclose(file2);
    return 0;
}

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

  1. Подключаются необходимые библиотеки для работы с файлами и строками
  2. Устанавливается русская локаль для корректного вывода кириллических символов
  3. Объявляются переменные:
    • a - необъявленная переменная, вероятно, используется для контроля условия feof(file)
    • file и file2 - файловые указатели для работы с файлами Miku.txt и Miku2.txt соответственно
    • str1 и str2 - массивы символов для хранения строк из файлов
    • minstr - массив символов для хранения минимальной строки
    • change - массив символов с поздравлением С Новым Годом!
  4. Открываются файлы Miku.txt и Miku2.txt в режиме добавления a+
  5. Считывается первая строка из файла Miku.txt в str2 с помощью функции fgets()
  6. Копируется содержимое str2 в minstr с помощью функции strcpy()
  7. Инициализируется счетчик i для нумерации строк
  8. В цикле while считываются строки из файла Miku.txt до достижения конца файла feof(file)
  9. Каждая строка выводится на экран с помощью функции printf()
  10. Строка записывается в файл Miku2.txt с помощью функции fputs()
  11. Если длина текущей строки меньше длины минимальной строки minstr, то содержимое minstr обновляется значением текущей строки
  12. После каждой итерации цикла i увеличивается на 1
  13. После завершения цикла выводится разделительная строка с помощью функции printf()
  14. Выводится минимальная строка с номером k на экран с помощью функции printf()
  15. Файлы Miku.txt и Miku2.txt закрываются с помощью функции fclose()
  16. Возвращается 0, что означает успешное завершение программы

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


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

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

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