Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 105, средняя оценка - 4.89
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

fflush(stdin) - C++

28.08.2012, 14:01. Просмотров 17018. Ответов 4
Метки нет (Все метки)

В одной из ранее открытых тем, было сказано, что fllush(stdin) лучше не использовать.
Чем можно заменить эту функцию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2012, 14:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос fflush(stdin) (C++):

std::fflush(stdin); - C++
std::fflush(stdin); что делает эта функция?

Fflush(stdin) по-разному работают в unix и windows - C++
Собственно, код: #include <iostream> #include <cstdio> using namespace std; int main() { char word1, word2; ...

if (feof(stdin)) while(!feo(stdin)) while(!feof(stdin) ) - C++
Как с ними правильно работать в Си?? Объясните принцип пожалуйста?

Опять про fflush, уже stdout - C++
Уважаемые профессионалы. В книге Хэзфилд, Кирби " Искусство программирования на языке Си. Фундаментальные алгоритмы.... " на 58 стр. увидел...

Неожиданное поведение fflush(), неправильная работа функции - C++
Никак не пойму почему код не хочет работать последовательно, так, как я ему указал.Что не так я делаю с fflush? Функция запрашивает лишь...

Программа пропускает ввод данных несмотря на fflush - C++
Доброго времени суток. Возникла проблема - когда я в первый раз в цикле ввожу текст посимвольно с помощью getchar, то все нормально. Однако...

4
grizlik78
Эксперт С++
1982 / 1475 / 126
Регистрация: 29.05.2011
Сообщений: 3,048
28.08.2012, 14:11 #2
В той теме подразумевалось fflush(stdout) после printf(), чтобы приглашение на ввод было отображено, но по ошибке было использовано fflush(stdin), для которого поведение не определено.
Для чего хочется использовать fflush(stdin)?
1
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 14:28  [ТС] #3
Например, в программе есть 2 переменные, которые считываются из стандартного потока ввода последовательно. Пусть первая переменная типа int, а вторая char *str. Тогда, если при 1 вводе вести
123qwe, то в переменную int попадёт только 123 и в потоке останется мусор. Тогда при 2 вводе в строку запишется мусор. Поэтому надо, как-то между вызовами очищать этот поток. Я использовал fflush(stdin). Вроде бы всегда работает?
0
grizlik78
Эксперт С++
1982 / 1475 / 126
Регистрация: 29.05.2011
Сообщений: 3,048
28.08.2012, 14:31 #4
Цитата Сообщение от bgm313 Посмотреть сообщение
Я использовал fflush(stdin). Вроде бы всегда работает?
В Windows — да. В Linux — нет.
Для гарантированного очищения буфера можно только явно считывать символы (например до символа новой строки). Консольный ввод предполагает, что вводимые элнменты могут разделяться пробельными символами и несколько значений можно ввести как в отдельных строках, так и в одной строке.
1
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2012, 16:42 #5
http://cppstudy.wordpress.com/2009/03/27/cin-get-and-co/
sync() в Linux не срабатывает.
0
28.08.2012, 16:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2012, 16:42
Привет! Вот еще темы с ответами:

stdin - C++
Как проверить средствами C пуст ли stdin?

Поток stdin - C++
Доброго времени суток. Ситуация следующая: пытаюсь расширить свои знания в программировании на С++, поэтому начал читать книгу Коплиена...

Библиотека stdin - C++
Наткнулся в вопросе к экзамену на библиотеку stdin. До этого ни разу с ней не работал. Поискал информацию в интернете, но ничего внятного о...

Ошибка при создании класса библиотека: "'fflush' was not declared in this scope" - C++
Доброго времени суток. Подскажите пожалуйста почему выдает ошибку? Вот задание: Вот сам код #include <iostream> #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru