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

Опять про fflush, уже stdout - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ скачать язык программирования С http://www.cyberforum.ru/cpp-beginners/thread11766.html
где я могу скачать язык программирования С
C++ что нужно поменять? подскажите пожалуйста, что нужно поменять, чтобы значение Radiusa не требовалось вводить с клавиатуры, а чтобы это значение бралось из bat файла? #include <stdio.h> #include <math.h> #include... http://www.cyberforum.ru/cpp-beginners/thread11752.html
Неправильное объявление или вызов подпрограмм C++
Приветствую Вас форумчане, помогите разобраться с кодом, недавно начал изучать с++ - вот решил накропать программку по обработке CDR-файлов Идея : при запуске юзер должен ввести часть имени файла а...
C++ Как запустить в Dev C++
#include<iostream> #include<iomanip> #include<fstream> using namespace std; int main() { ifstream fin("с:\\input.txt", ios::in|ios:: nocreate); if(!fin) { cout <<...
C++ использование setdate http://www.cyberforum.ru/cpp-beginners/thread11717.html
Какую максимальную дату можно установить в качестве системного времени в DOS с помощью Си?
C++ dev c++ 4.9 не понимает тип string #include <iostream> #include <string> using std::cout; using std::endl; using std::string; class Invoice { подробнее

Показать сообщение отдельно
warobushek
2 / 2 / 0
Регистрация: 08.03.2008
Сообщений: 82

Опять про fflush, уже stdout - C++

31.08.2008, 05:46. Просмотров 4504. Ответов 9
Метки (Все метки)

Уважаемые профессионалы. В книге Хэзфилд, Кирби " Искусство программирования на языке Си. Фундаментальные алгоритмы.... " на 58 стр. увидел текст ниже. Скажите, кто прав? Он или авторы следующих ресурсов : http://c-faq.com/stdio/stdinflush.html http://c-faq.com/stdio/stdinflush2.html .
Подавление буферов ввода
Ниже демонстроруется обычно применяемая методика освобождения от нежелательных символов во входном потоке:
Код
printf("Введите возраст");
scanf("%d", &age);     /*получение возраста*/ 
printf("Введите размер обуви:");
fflush(stdin);
scanf("%d", &shoesize);
Почитаем, что стандарт говорит об этом фрагменте:
Код
#include <stdio.h>
int fflush(FILE* stream);
Из раздела 7.19.5.2: "[#2] Если stream указывает на выходной поток
или на модификацию потока, в котором последняя не было операцией ввода,
функция fflush удаляет любые непечатаемые данные, для которых поток доставлен
в хост-среду для записи в файл; в противном случае поведение неопределено".


Если вы хотите избавиться от случайных символов между обращениями к scanf, можете сделать это следующим образом:
Код
 printf("Введите возраст:");
fflush(stdout);
scanf("%d",&age);
printf("Введите размер обуви:");
fflush(stdout);
scanf(" %d", &shoesize); [color=red] /*обратите внимание на лидирующий пробел*/ [/color]
(Как вы видите, я принял возможность продемонстрировать, что вы можете переносимо собрать ввод на той же строке, что и предыдущий вывод, разумно используя функцию fflush() )
Скажите, кто прав? Что дает этот "волшебный" пробел в его примере?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru