Определить в K-ой строке файла самое короткое слово, начинающееся и заканчивающееся с символа C - C (СИ)
Формулировка задачи:
Дано:
в текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K и символ C.Требуется:
определить в K-ой строке файла fin.txt самое короткое слово, начинающееся и заканчивающееся с символа C и сформировать текстовый файл fout.txt, в который записать это слово и его длину. Помогите пожалуйста, не могу понять, как работать с файлами.Решение задачи: «Определить в K-ой строке файла самое короткое слово, начинающееся и заканчивающееся с символа C»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
int min = 80, len, n = 1, ns = 1, k;
char c, word1[20], str[80];
FILE *fin, *fout;
printf("Enter string number ");
scanf("%d", &k);
printf("Enter desired letter ");
scanf(" %c", &c);
fin = fopen("fin.txt", "r");
fout = fopen("fout.txt", "w");
while(1){
fgets(str, 80, fin);
++ns;
if(ns == k +1){
fprintf(fout, "%s", str);
break;
}
}
fclose(fin);
fclose(fout);
fout = fopen("fout.txt", "r");
while(n == 1){
n = fscanf(fout, "%s", str);
len = strlen(str);
if(str[0] == c && str[len - 1] == c){
if(min > len){
min = len;
strcpy(word1, str);
}
}
}
fclose(fout);
fout = fopen("fout.txt", "w");
fprintf(fout, "%s %d", word1, min);
fclose(fout);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются начальные значения переменных
- Пользователю предлагается ввести номер строки и символ
- Открываются файлы для чтения и записи
- В цикле пока не будет прочитана нужная строка, считываются строки из файла
- Если строка соответствует условиям (начинается и заканчивается на введенный символ), то она записывается в файл для вывода и проверяется на минимальную длину
- Если найдена более короткая строка, то она становится новой минимальной длиной
- Закрываются файлы для чтения и записи
- Открывается файл для вывода
- В цикле пока не будет прочитана строка, считываются строки из файла для вывода
- Если длина строки соответствует минимальной длине, то выводится эта строка
- Закрывается файл для вывода
- Возвращается 0, чтобы указать, что программа успешно завершилась