Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2017, 20:16   #1
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
По умолчанию Очистка потока ввода в Си

Здравствуйте. Надеюсь, хотя бы кто-то поможет, потому что уже глаза болят рыть интернет и натыкаться на одно и тоже (

Как очистить поток ввода в Си, если мне нужно проверить, ввёл ли человек число, а не что-то другое?
fflush(stdin) не работает (Visual Studio 2015).
Код:
int n;
do
	{
	     printf(...);
             fflush(stdin);
	} while (scanf_s("%d", &n));
При вводе числа всё замечательно, как только это не число - у меня бесконечный цикл. Я понимаю, что не очищается буфер, но fflush(stdin) как описывается во многих примерах, также не даёт никакого эффекта. Подскажите, пожалуйста, как мне очистить поток ввода, чтобы принять число, а не строку, к примеру.

Заранее огромное спасибо!
romantiqueamour вне форума Ответить с цитированием
Старый 18.03.2017, 20:39   #2
romantiqueamour
Пользователь
 
Регистрация: 18.11.2016
Сообщений: 26
По умолчанию

Нашёл решение, вдруг кому поможет!
Код:
int a;
	do
	{
		printf("Введи число:\n");
		scanf_s("%d", &a);
	} while (getchar() != '\n');
Возможно, это не очищает поток, но по крайней мере не допускает бесконечного цикла и корректно работает

Последний раз редактировалось romantiqueamour; 18.03.2017 в 20:43. Причина: Переосмыслил, дополнил комментарием
romantiqueamour вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к методу потока(TThread) из основного потока? Pcrepair Общие вопросы Delphi 3 30.03.2013 14:52
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Форматирование ввода в колонку dataGridView и проверка правильности ввода tumanovalex C# (си шарп) 1 31.05.2011 19:56
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Как сделать запрет ввода букв в поле для ввода input zvezda_t PHP 1 27.12.2009 22:02