Чтение из файла - 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);
Объяснение кода листинга программы
- Объявлена переменная
stringlih
типаchar*
и инициализирована значениемstringlih
. - Объявлена переменная
out
типаFILE*
. - В цикле
while
происходит чтение из файла с помощью функцииfgets
в переменнуюstringlih
. - Если в строке
stringlih
найдено совпадение с шаблономPoiskPoAdresu
с помощью функцииstrstr
, то выводится сообщение с содержимым этой строки. - Если в строке
stringlih
не найдено совпадение с шаблономPoiskPoAdresu
с помощью функцииstrstr
, то выводится сообщениене найдены
. - Если в строке
stringlih
найдено совпадение с шаблономPoiskPoAdresu
с помощью функцииstrstr
, то выводится сообщениеВ строке: stringlih хранятся данные для воссоздания пароля
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д