Консольним введенням/виведенням називають операції, у яких використовуються стандартні пристрої введення/виведення. Останні, в принципі, можуть перепризначуватися, однак у більшості випадків стандартним пристроєм введення є клавіатура, а стандартним пристроєм виведення інформації - екран монітора.
Засоби програмування операцій консольного введення/виведення можна класифікувати в такий спосіб. Всі бібліотечні засоби можна розділити на дві групи: функції бібліотечних модулів stdio.h і conio.h (це мова С) та засоби, пов'язані з потоками (а це вже С++). І в першому, і в другому випадках існують засоби консольного й файлового введення/виведення. Крім того, функції введення/виведення розподіляють на функції, які виконують форматні перетворення та функції, які не виконують такого роду перетворення при передаванні даних.
Форматне перетворення виведення - це перехід від бінарного коду значення до його зовнішнього, символьного подання. При форматному перетворенні введення виконується зворотний перехід: від символьного подання до бінарного коду. Форматні перетворення величин дійсного типу у більшості випадків призводять до втрати деякої частини інформації. У той же час форматні перетворення величин цілого типу являють собою "точне" кодування і не супроводжуються втратою інформації.
Нижче приводяться описи деяких найбільше часто вживаних функцій консольного введення/виведення із модулів stdio.h та conio.h.
Для введення даних із клавіатури використовується функція
scanf(формат, p1, p2,... ) ;
де формат - специфікація формату, а p1, p2, ... - адреси об'єктів, значення яких вводяться. У найпростіших випадках специфікація формату для введення має такий вигляд: "%символ" , де символ - один із символів перетворення формату. Як виглядає специфікація формату у загальному випадку та які можливості керування форматними перетвореннями ми маємо - це можна подивитись у довідковій системи оболонки, яку ми застосовуємо для побудови програми. У середовищі Borland C++ для цього треба вибрати пункт "Help" головного меню вікна оболонки.
Виведення даних на екран здійснюється функцією printf(формат, e1, e2, ... );
де формат також є специфікація формату, e1, e2, ... - довільні вирази (або змінні), значення яких виводяться.
Специфікації формату
Специфікація формату для виведення звичайно має такий вигляд:
" % [ширина][.точність]символ" ,
де ширина - ширина поля виведення (кількість позицій рядка екрана),
точність - потрібна кількість цифр після десяткової крапки (остання цифра виводиться з округленням),
символ - символ форматного перетворення, пов’язаний з типом значення, яке передається.
Нижче наведені формати, які використовуються найбільш часто.
%c - введення/виведення символу (тип char);
%s - введення/виведення рядка символів (тип char*);
%d - введення цілого числа (типи short, int),
виведення цілого числа (типи char, short, int);
%ld - введення/виведення цілого числа (тип long);
%u - введення/виведення цілого числа (типи unsigned char, unsigned short,
unsigned int);
%lu - введення/виведення цілого числа (тип unsigned long);
%X - введення/виведення цілого числа в 16-ричному форматі;
%f - введення/виведення дійсного числа (тип float);
%e - введення/виведення дійсного числа у формі з десятковим порядком (тип float);
%lf - введення/виведення дійсного числа (тип double);
%Lf - введення/виведення дійсного числа (тип long double);
%*d - при введенні пропустити значення, тип якого відповідає символу d,
замість d можна записати символ, що відповідає іншому типу.
Передбачено також формати введення за зразком та інші можливості.
Введення одного символу
Для введення одного символу можна використати функції getchar() і getch().
Функція getchar() повертає черговий символ з буфера клавіатури. Якщо буфер порожній, очікується введення символів, яке повинно завершуватися натисканням клавіші Enter.
Для того, щоб подивитися, як працює функція getchar(), запустіть на виконання таку програму:
// Приклад 1
#include <syst.h>