Дан текстовый файл. Напечатать символы с 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;
}

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

  1. Подключаются необходимые библиотеки для работы с файлами и строками
  2. Объявляются переменные: — FILE *fin - указатель на файл, который будет использоваться для чтения — int i, k, n_line = 0, s1, s2; - целочисленные переменные для хранения номеров и символов — char str[80]; - массив символов для хранения строки из файла
  3. Открывается файл input.txt для чтения
  4. Выводится сообщение для ввода номера строки
  5. Пользователь вводит номер строки и сохраняется в переменной k
  6. Выводится сообщение для ввода символов 1 и 2
  7. Пользователь вводит символы и сохраняются в переменных s1 и s2
  8. Проверяется корректность введенных данных (s1 <= s2 <= 79)
  9. В цикле while считываются строки из файла до тех пор, пока не будет найдена нужная строка
  10. Если найдена нужная строка, то в цикле for выводятся символы от s1 до s2
  11. Если нужная строка не найдена, выводится сообщение об ошибке
  12. Закрывается файл
  13. Возвращается 0, если все успешно, иначе возвращается 1

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

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