Строки и работа с текстовым документом - 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; }
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с файлами и строками
- Устанавливается русская локаль для корректного вывода кириллических символов
- Объявляются переменные:
a
- необъявленная переменная, вероятно, используется для контроля условияfeof(file)
file
иfile2
- файловые указатели для работы с файламиMiku.txt
иMiku2.txt
соответственноstr1
иstr2
- массивы символов для хранения строк из файловminstr
- массив символов для хранения минимальной строкиchange
- массив символов с поздравлениемС Новым Годом!
- Открываются файлы
Miku.txt
иMiku2.txt
в режиме добавленияa+
- Считывается первая строка из файла
Miku.txt
вstr2
с помощью функцииfgets()
- Копируется содержимое
str2
вminstr
с помощью функцииstrcpy()
- Инициализируется счетчик
i
для нумерации строк - В цикле
while
считываются строки из файлаMiku.txt
до достижения конца файлаfeof(file)
- Каждая строка выводится на экран с помощью функции
printf()
- Строка записывается в файл
Miku2.txt
с помощью функцииfputs()
- Если длина текущей строки меньше длины минимальной строки
minstr
, то содержимоеminstr
обновляется значением текущей строки - После каждой итерации цикла
i
увеличивается на 1 - После завершения цикла выводится разделительная строка с помощью функции
printf()
- Выводится минимальная строка с номером
k
на экран с помощью функцииprintf()
- Файлы
Miku.txt
иMiku2.txt
закрываются с помощью функцииfclose()
- Возвращается 0, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д