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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.79
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
#1

Пожалуйста подскажите что делает данная функция? - C++

13.01.2012, 19:54. Просмотров 4866. Ответов 12
Метки нет (Все метки)

Пожалуйста подскажите что делает данная функция?
fflush(stdin);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пожалуйста подскажите что делает данная функция? (C++):

Что делает данная функция - C++
Вопрос. Что в данном коде делают функции с 97ой строки, интересует так же что значит FILE *fp и getc(fp) (конкретно что значит fp) ...

что делает данная функция - C++
bool isProoved(Node& node) { for (string left : node.left) for (string right : node.right) if (isSingleExpression(left) &&...

Ребята! Пожалуйста, объясните что делает данная программа? - C++
#include "stdafx.h" #include<fstream> #include "defs.h" #define S 0 #define B 7 #define PLUS 1.5 #define MINUS 0.5 using...

Пожалуйста подскажите, что делает программа? - C++
public: A(); A(const A &); ~A(); friend A operator+(A a, B b); friend void display(A a); }; class B { int *arr;

Объясните пожалуйста что делает функция - C++
и если это какая то формула, то можно ссылку на неё int letterFromNumber(int number, int index, int n) { int num = number /...

Подскажите, что делает функция cudaMalloc - C++
Начал читать книгу по CUDA.В ней встретился вот такой код.В этом коде не очень понятна строка функции cudaMalloc. Перед ней определяется...

12
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.01.2012, 20:03 #2
Очищает буфер входного потока.
Желательно вставлять перед всеми scanf'ами, что бы вводилось именно то, что нужно.
Это если в кратце

Добавлено через 3 минуты
Но можно добавить, что само использование fflush c входным потоком противоречит стандарту Си
1
.Malek.
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
13.01.2012, 20:04  [ТС] #3
т.е.fflush вообще не относится к си а к чему тогда?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 20:06 #4
.Malek., fflush не применим к входным потокам. Она для них не определена.
1
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.01.2012, 20:28 #5
Нет, относиться - относится, и многие профессора, преподаватели ее очень часто используют и заставляют использовать других. На мой взгляд - до первой ошибки. В одном из своих проектов действительно ее использовал, т.к. вводить надо было много, мало ли что, где накроется. Без нее действительно бывали ошибки, а вот так, что бы наоборот - использовал и ошибка вылетела, такого еще не было(наверное, мало пользовался)
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 20:38 #6
Eugene THE BEST, Как перед следующей итерацией опустошить stdin
лучше так
C
1
2
int c;
while ( getchar () != EOF ) ;
1
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.01.2012, 20:39 #7
go, как так? Чем в С входной поток от выходного отличается? Та же переменная типа FILE *.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 20:55 #8
silent_1991, вы про это?
Remarks

The fflush function flushes a stream. If the file associated with stream is open for output, fflush writes to that file the contents of the buffer associated with the stream. If the stream is open for input, fflush clears the contents of the buffer. fflush negates the effect of any prior call to ungetc against stream. Also, fflush(NULL) flushes all streams opened for output. The stream remains open after the call. fflush has no effect on an unbuffered stream.
Но как же это?
If it was open for reading and the last operation was an input operation, the behavior depends on the specific library implementation. In some implementations this causes the input buffer to be cleared, but this is not standard behavior.
0
Eugene THE BEST
9 / 9 / 0
Регистрация: 14.02.2010
Сообщений: 126
13.01.2012, 21:03 #9
go,
Спасибо, буду теперь применять
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.01.2012, 22:02 #10
go, ну, во-первых, там сказано про поведение в некоторых реализациях, которое не является стандартным, но я всё-же ответил потому, что вы написали, что функция для потока ввода не определена. Поскольку в С нет перегрузки, то такая функция определена для любого потока, в том числе и для потока ввода.
1
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.01.2012, 22:10 #11
How can I flush pending input so that a user's typeahead isn't read at the next prompt? Will fflush(stdin) work?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 22:25 #12
silent_1991, получится не переносимый код.
Вы не можете почисить буфер stdin, потому что нет такой возможности.
функция fflush() даёт неопределённой поведение, когда её вызывают для потока ввода, а stdin - поток ввода
Есть компиляторы, в которых это возможно. Но повторюсь, Вы получите не переносимый код, т.к. все компиляторы не обязаны поддерживать это. В BSD, например, http://www.freebsd.org/cgi/man.cgi?q...lt&format=html
http://faq.cprogramming.com/cgi-bin/...&id=1043284392

Добавлено через 17 секунд
Или я не прав?
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.01.2012, 22:28 #13
go, мое сообщение относилось лишь к этим вашим словам:
Цитата Сообщение от go Посмотреть сообщение
Она для них не определена.
Поскольку это неверно, я решил это опровергнуть. Не ожидал, что это вызовет дискуссию)))
1
13.01.2012, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2012, 22:28
Привет! Вот еще темы с ответами:

Что делает данная программа? - C++
Здравствуйте! Откопал код программы, необходимо узнать, что она конкретно делает. Есть догадки, но хочу удостовериться, что думаю верно....

Что делает данная программа? - C++
#include <stdarg.h> #include <iostream.h> #include <conio.h> void sum (char *fmt,...) { va_list ap; int a; double b; ...

Что делает данная конструкция? - C++
int x = 5; 0 = x + x; Что она делает, как называется и зачем используется?

Что делает данная строка в коде - C++
Кто может объяснить что делает данная строка в коде, вот функция в которой она используется(корманная сортировка): int...


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

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

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