Напечатать все строки файла, содержащие в качестве фрагмента заданный текст - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
//Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст
int main( void )
{
setlocale(LC_ALL,"rus");
char ch[256], text[50];
int len=0, maxlen=0;
FILE *fp;
if((fp = fopen("f.txt", "r"))==NULL)
{
printf("Нельзя открыть файл...\n");
exit(1);
}
printf("Введите искомый текст (не более 50 символов): ");
gets(text);
do
{
fgets(ch,255,fp);
if(ch==text) printf("%c",ch);
}
while(!feof(fp));
fclose(fp);
system("pause");
return 0;
}Решение задачи: «Напечатать все строки файла, содержащие в качестве фрагмента заданный текст»
textual
Листинг программы
do
{
fgets(ch,255,fp);
if(strstr(ch,text)!=0)
printf("%s",ch);
}
while(!feof(fp));
Объяснение кода листинга программы
- В коде используется цикл do-while, который выполняет блок кода до тех пор, пока условие истинно.
- Условие цикла - это проверка на достижение конца файла (feof(fp)).
- Внутри цикла выполняется чтение строки из файла с помощью функции fgets.
- Переменная ch является буфером для хранения прочитанной строки, ее размер 255 символов.
- Если в строке есть заданный текст (проверка с помощью функции strstr), то эта строка выводится на экран с помощью функции printf.
- Цикл продолжается до тех пор, пока не будет достигнут конец файла.
- Заданный текст, который ищется в строках файла, хранится в переменной text.
- Файл, из которого считываются строки, открывается с помощью функции fopen и обозначается переменной fp.