Форум программистов, компьютерный форум CyberForum.ru

fflush(stdin) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 105, средняя оценка - 4.89
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 14:01     fflush(stdin) #1
В одной из ранее открытых тем, было сказано, что fllush(stdin) лучше не использовать.
Чем можно заменить эту функцию?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2012, 14:01     fflush(stdin)
Посмотрите здесь:

C++ Опять про fflush, уже stdout
if (feof(stdin)) while(!feo(stdin)) while(!feof(stdin) ) C++
stdin, stdout, stderror C++
Поток stdin C++
C++ stdin
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.08.2012, 14:11     fflush(stdin) #2
В той теме подразумевалось fflush(stdout) после printf(), чтобы приглашение на ввод было отображено, но по ошибке было использовано fflush(stdin), для которого поведение не определено.
Для чего хочется использовать fflush(stdin)?
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
28.08.2012, 14:28  [ТС]     fflush(stdin) #3
Например, в программе есть 2 переменные, которые считываются из стандартного потока ввода последовательно. Пусть первая переменная типа int, а вторая char *str. Тогда, если при 1 вводе вести
123qwe, то в переменную int попадёт только 123 и в потоке останется мусор. Тогда при 2 вводе в строку запишется мусор. Поэтому надо, как-то между вызовами очищать этот поток. Я использовал fflush(stdin). Вроде бы всегда работает?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.08.2012, 14:31     fflush(stdin) #4
Цитата Сообщение от bgm313 Посмотреть сообщение
Я использовал fflush(stdin). Вроде бы всегда работает?
В Windows — да. В Linux — нет.
Для гарантированного очищения буфера можно только явно считывать символы (например до символа новой строки). Консольный ввод предполагает, что вводимые элнменты могут разделяться пробельными символами и несколько значений можно ввести как в отдельных строках, так и в одной строке.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2012, 16:42     fflush(stdin) #5
http://cppstudy.wordpress.com/2009/0...in-get-and-co/
sync() в Linux не срабатывает.
Yandex
Объявления
28.08.2012, 16:42     fflush(stdin)
Ответ Создать тему
Опции темы

Текущее время: 20:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru