Дан текстовый файл. Напечатать символы с s1 по s2 из строки с номером k - C (СИ)
Формулировка задачи:
Дан текстовый файл. Напечатать символы с s1 по s2 из строки с номером k (эти данные вводятся с клавиатуры)
Решение задачи: «Дан текстовый файл. Напечатать символы с s1 по s2 из строки с номером k»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fin;
int i, k, n_line = 0, s1, s2;
char str[80];
fin = fopen("input.txt", "r");
puts("Input line number:");
scanf("%d", &k);
puts("Input number symbols 1 and 2");
scanf("%d%d", &s1, &s2);
if(s1 > s2 || s2 > 79){
puts("incorrect input,try again");
return 1;
}
while(fgets(str, 80, fin)){
n_line++;
if(n_line == k){
for(i = s1 - 1; i < s2 - 1 && i < strlen(str) - 1; i++)
printf("%c", str[i]);
break;
}
}
if(n_line < k){
printf("Line not found,try again");
return 1;
}
fclose(fin);
return 0;
}
Объяснение кода листинга программы
- Подключаются необходимые библиотеки для работы с файлами и строками
- Объявляются переменные:
—
FILE *fin- указатель на файл, который будет использоваться для чтения —int i, k, n_line = 0, s1, s2;- целочисленные переменные для хранения номеров и символов —char str[80];- массив символов для хранения строки из файла - Открывается файл
input.txtдля чтения - Выводится сообщение для ввода номера строки
- Пользователь вводит номер строки и сохраняется в переменной
k - Выводится сообщение для ввода символов 1 и 2
- Пользователь вводит символы и сохраняются в переменных
s1иs2 - Проверяется корректность введенных данных (s1 <= s2 <= 79)
- В цикле while считываются строки из файла до тех пор, пока не будет найдена нужная строка
- Если найдена нужная строка, то в цикле for выводятся символы от s1 до s2
- Если нужная строка не найдена, выводится сообщение об ошибке
- Закрывается файл
- Возвращается 0, если все успешно, иначе возвращается 1