Напечатать все строки файла, содержащие в качестве фрагмента заданный текст - 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));

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

  1. В коде используется цикл do-while, который выполняет блок кода до тех пор, пока условие истинно.
  2. Условие цикла - это проверка на достижение конца файла (feof(fp)).
  3. Внутри цикла выполняется чтение строки из файла с помощью функции fgets.
  4. Переменная ch является буфером для хранения прочитанной строки, ее размер 255 символов.
  5. Если в строке есть заданный текст (проверка с помощью функции strstr), то эта строка выводится на экран с помощью функции printf.
  6. Цикл продолжается до тех пор, пока не будет достигнут конец файла.
  7. Заданный текст, который ищется в строках файла, хранится в переменной text.
  8. Файл, из которого считываются строки, открывается с помощью функции fopen и обозначается переменной fp.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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