Чтение из файла - C (СИ)

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

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

Проблема с циклом, не понимаю как сделать так, чтобы программа считает каждую строку, сравнивает с похожей, если очередная строка не подходит- переходим на следующую строку, и так пока весь файл не прочитает ( по идеи если есть строка нужная- вывести ее и цикл закончить, нет ее- в конце сообщение типа " совпадений не найдено") Вот функция моя:
void poisk(void)
{
    char PoiskPoAdresu[50], stringlih[100];
 
    FILE * out = fopen("BDmenedgeraParoley.txt", "r");
    printf("Для поиска пароля введите адрес сайта: ");
    scanf("%s", &PoiskPoAdresu);
 
    printf("Данные: ");
 
    while (fgets(stringlih,sizeof(stringlih), out) != NULL)
    {
            if (strstr(stringlih, PoiskPoAdresu) !=NULL)
            {
                printf("%s ", stringlih); break;
            }
            else printf("Не найдено\n");
        
    }
    fclose(out);
}
Проблема в том, что прочитав строку, программа видит что не строка не подходит и пишет сообщение, и читает далее до нужной, находит нужную - выводит ее и завершает чтение файла. ( на скрине видно) Что не так, подскажите?

Решение задачи: «Чтение из файла»

textual
Листинг программы
while (fgets(stringlih, sizeof(stringlih), out) != NULL)
    {
        if (strstr(stringlih, PoiskPoAdresu) != NULL)
        {
            printf("%s \n\n", stringlih); break;
        }
    }
           if (strstr(stringlih, PoiskPoAdresu) == NULL)
               printf("не найдены\n");
           else 
           printf("В строке: %s хранятся данные для воссоздания пароля \n ", stringlih);

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

  1. Объявлена переменная stringlih типа char* и инициализирована значением stringlih.
  2. Объявлена переменная out типа FILE*.
  3. В цикле while происходит чтение из файла с помощью функции fgets в переменную stringlih.
  4. Если в строке stringlih найдено совпадение с шаблоном PoiskPoAdresu с помощью функции strstr, то выводится сообщение с содержимым этой строки.
  5. Если в строке stringlih не найдено совпадение с шаблоном PoiskPoAdresu с помощью функции strstr, то выводится сообщение не найдены.
  6. Если в строке stringlih найдено совпадение с шаблоном PoiskPoAdresu с помощью функции strstr, то выводится сообщение В строке: stringlih хранятся данные для воссоздания пароля.

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


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

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

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