| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Построчное чтение из файла? |
| Автор: LeoKiyv 9.5.2012, 12:32 | ||||
| Доброго времени суток. У меня совсем простой вопрос, но который для меня оказался сложен. Как читать построчно из файла? http://www.cplusplus.com/reference/clibrary/cstdio/fgets/ о функции fgets читает только первую строку:
А как считывать остальные строки? Нужно для нахождения определенного слова в файле вида:
а именно первых слов (Кошка, Собака, Чайник), для программы-словарика, о которой я писал: http://forum.vingrad.ru/forum/topic-351496.html |
| Автор: NadezdaT 9.5.2012, 13:15 |
| попробуй while (!feof(fin)) // fin файл { fgets(strok, l_model, fin);//strok строка из n символов fscanf_s(fin, "\n"); } |
| Автор: feodorv 9.5.2012, 14:57 | ||
|
| Автор: LeoKiyv 9.5.2012, 17:18 | ||
| feodorv, спасибо, заработало. Модифицировал немного прогу, чтобы она находила искомую строку:
Как сделать, чтобы она выдавала текст в строке, после найденного слова? К примеру, нашло оно слово Кошка и выдавало его определение: пушистый, лохматый зверь ? |
| Автор: LeoKiyv 9.5.2012, 21:27 | ||||||||||||
А как это использовать? Я потом с помощью:
Узнаю номер символа, где в строке заканчивается это слово. И вывожу потом оставшуюся часть строки на экран:
Вот только оно выдает еще кучу левых символов, после окончания строки, которыми оно заполнило масив char до сотни. Так и не знаю, как отлавливать конец строки. -------------------------------------------------------------------------------------------------------
Благодарю за подсказку. А как узнать длину wordlen вводимого с клавиатуры слова? sizeof(mystring) выдает всегда именно ту длину, которую я указал вручную, а именно 100. |
| Автор: feodorv 10.5.2012, 09:45 | ||||
|
| Автор: LeoKiyv 10.5.2012, 11:06 | ||||||||
Спасибо, заработало) Ты настоящий волшебник! Вот у меня еще вопрос. Используя код:
Как потом вывести часть строки после ';', без изспользования цикла for? |
| Автор: feodorv 10.5.2012, 12:17 | ||||
))))
подойдёт? PS Если строка в файле заканчивается переводом строки, то при её печати перевод строки на новую строку уже будет ;) Если нет (такое возможно для самой последней строки файла), то не будет))) |
| Автор: LeoKiyv 10.5.2012, 15:23 | ||||||
Да, то что нужно. Переделал программу, чтобы она читала словарь Даля, который взял здесь: http://www.zipsites.ru/slovari/dal/ Там слова представлены в виде:
Мой рабочий код:
Пока не знаю, как научить программу воспринимать кирилицу, транслитерировал весь словарь Штирлицем. Сейчас учусь как привязать все это к простой форме MFC: http://forum.vingrad.ru/forum/topic-351496.html |
| Автор: feodorv 10.5.2012, 22:43 | ||||||
С многострочными записями работать не так просто. Вот например: А если нету следующей строки? Где проверка на NULL?
Про то, что strstr делает совсем не то, что Вы от неё хотите, я уже писал. Писал и как правильно сравнивать начало строк И где перевод в верхний регистр?
Опять таки, strstr - поиск подстроки в строке, а не сравнение начала строки (а вдруг такое встретится в ненужном месте?) Судя по тем записям словаря Даля, который Вы привели, достаточно проверить
Можно почитать http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=2086699 |
| Автор: LeoKiyv 13.5.2012, 20:57 |
| Подключил #include <locale.h> Написал setlocale(LC_ALL, ""); Все равно не хочет искать русский текст в файле. |