Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст - C (СИ)

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

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

Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст

Решение задачи: «Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст»

textual
Листинг программы
#include  <stdio.h>
#include <string.h>
#define N 255
 
int main(void)
{
    FILE *in;
    char buf[N], *name="C:\\in.txt";
    char text[N]="hello!";
    int f=0;
    if((in=fopen(name, "r"))==NULL)return 1;
    while(fgets(buf, N, in)!=NULL)
    {
        if(strstr(buf, text)!=NULL){printf("%s\n", buf); f=1;}
    }
    if(!f)printf("No!\n");
    fclose(in);
    return 0;
}

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

  1. Подключаются необходимые библиотеки
  2. Определяется константа N, ограничивающая размер буфера
  3. Создается указатель на файл in, а также на строки buf и text
  4. Открывается файл in для чтения с помощью функции fopen
  5. Устанавливается флаг f равным 0
  6. В цикле while считываются строки из файла до тех пор, пока не достигнут конец файла
  7. Для каждой считанной строки проверяется наличие в ней заданного текста с помощью функции strstr
  8. Если заданный текст найден, то строка выводится на экран и флаг f устанавливается равным 1
  9. После окончания цикла проверяется значение флага f. Если он равен 0, то выводится сообщение No!
  10. Закрывается файл in с помощью функции fclose
  11. Программа возвращает 0, что означает успешное выполнение

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

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