Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст - 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;
}
Объяснение кода листинга программы
- Подключаются необходимые библиотеки
- Определяется константа N, ограничивающая размер буфера
- Создается указатель на файл in, а также на строки buf и text
- Открывается файл in для чтения с помощью функции fopen
- Устанавливается флаг f равным 0
- В цикле while считываются строки из файла до тех пор, пока не достигнут конец файла
- Для каждой считанной строки проверяется наличие в ней заданного текста с помощью функции strstr
- Если заданный текст найден, то строка выводится на экран и флаг f устанавливается равным 1
- После окончания цикла проверяется значение флага f. Если он равен 0, то выводится сообщение
No! - Закрывается файл in с помощью функции fclose
- Программа возвращает 0, что означает успешное выполнение