| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Проблема со scanf()ом |
| Автор: Shipa 26.10.2009, 14:52 | ||
| Люди добрые, помогите мне, неумехе несчастному... короче, есть прога на си:
Оформить её можно поразному, суть не изменится. Программа проверяет ввод: число\буква. Суть в том, что в отдельной программе процедура pumba выполнится идеально, но как только втыкаешь её в цикл, то начинаются жесткие лаги..... Почему так происходит??? Что с этим делать?? вообще, надо создать простенькую фильтрацию входных данных, может это как-то по другому лучше делать?? |
| Автор: bsa 26.10.2009, 15:26 |
| легко. Сначала читаешь строку через fgets(buf, size_of_buffer, stdin), затем парсишь ее уже через sscanf. |
| Автор: Shipa 26.10.2009, 19:39 |
| bsa, можно поподробнее, если можно, просто я слабо ориентируюсь в си пока что... |
| Автор: XYZ010 26.10.2009, 19:52 | ||
А да к все понятно функции то передать надо что то а вы ее пустую запускаете.
вот так поппробуйте инициализировать |
| Автор: bsa 26.10.2009, 23:34 |
| XYZ010, ты думаешь, что убрав возвращаемое значение что-то поменяется? А зря! Shipa, что делает scanf() знаешь? Она читает стандартный ввод на предмет подходящих шаблону символов, затем парсит и записывает значение в переменную. Если попадаются некорректные символы, то они не забираются из потока, таким образом, следующая команда scanf опять их и считает. Чтобы этого не происходило, нужно сначала прочитать всю строку в буфер из стандартного ввода, а затем уже отправить на разбор. С буфером работает уже функция sscanf(). |
| Автор: Anikmar 26.10.2009, 23:48 |
| Попробуйте после scanf воткнуть fflush(stdin); |
| Автор: XYZ010 27.10.2009, 06:28 | ||
я не говорю о том что функция что то возвращает она у вас получает все что угодно. Зачем? |
| Автор: bsa 27.10.2009, 11:14 |
| XYZ010, почитай книжку по Си. Что сейчас в С99, я не знаю, а раньше было так: f(void) - функция которая не принимает никакие параметры, а f() - функция, количество параметров которой не определено.. В С++ f(void) и f() - одно и тоже. |
| Автор: Shipa 28.10.2009, 15:41 |
| всем спасибо, я разбил строку посимвольно ивсе ок! |
| Автор: bsa 28.10.2009, 16:44 | ||
мазохист...
|