Классификация средств вывода:
1. По уровню абстрагирования от деталей организации взаимодействия с внешними устройствами:
1) высокий, или уровень потоков и объектов типа файл;
2) средний, или уровень стандартных системных устройств ввода/вывода (консоль и принтер);
3) низкий – уровень ОС при работе с бинарными файлами и портами ввода/вывода.
2. С позиции стиля программирования:
1) процедурно-ориентированная система ввода/вывода в С;
2) объектно-ориентированная система ввода/вывода в С++.
3. По способу создания различают:
1) автоматически создаваемые потоки, которые связаны со стандартными системными устройствами ввода/вывода, которые называются консольными или стандартными;
2) явно создаваемые потоки для обмена данными с файлами (файловые потоки);
3) явно создаваемые потоки для обмена данными со строками в оперативной памяти (строковые потоки).
4. По направлению передачи данных различают:
1) входные потоки;
2) выходные потоки;
3) двунаправленные потоки.
5. По наличию форматирования различают:
1) форматированные потоки;
2) неформатированные потоки для работы со строками и символами. Строкоориентированные потоки служат для работы с текстовыми файлами, символьные – с бинарными файлами.
Ввод/вывод через стандартные потоки.
При подключении библиотеки stdio.h явно создаются следующие потоки:
- stdin – входной поток для ввода данных с клавиатуры,
- stdout – выходной поток для вывода данных на монитор,
- stderr – стандартный выходной поток для вывода сообщений об ошибках на монитор.
Форматированный ввод вывод:
Операции форматированного обмена данными с консолью через стандартные потоки stdin, stdout выполняется с помощью функций:
int printf (const char * format [,argument, …]);
int scanf (const char * format [,address, …]);
Обязательный аргумент – строка форматирования. Необязательные аргументы – имена переменных в printf() или адреса переменных в scanf().
При успешном выводе printf() возвращает число переданных байтов, а в случае ошибки - EOF. Scanf() при успешном вводе возвращает число введенных переменных, в случае ошибки - 0. При выполнении printf() строка форматирования посимвольно выводится на экран до тех пор, пока не встретится знак % - признак спецификатора формата. После этого начинается вывод форматированного значения первой переменной, следующей в списке аргументов за строкой форматирования. Вывод строки форматирования продолжается до следующего спецификатора и т.д. Число аргументов за строкой форматирования должно совпадать с числом спецификаторов.
% [*] [width] [.prec] [F|N] [h|l|L] type_char
Компоненты |
Назначение |
* |
- – выравнивание по левому краю поля вывода “ “ – если число положительное, знак плюс не выводить + - значение знаковых типов выводить со знаком 0 – заполнить лишнее пространство нулями вместо пробелов # - выводить 0 перед восьмеричным числом или 0Х перед шестнадцатиричным |
width |
максимальная ширина поля вывода |
prec |
для целых чисел – минимальное число выводимых цифр для дробных чисел– максимальное число цифр дробной части |
F | N |
модификатор размера адреса аргумента (дальний F) или (ближний N) |
h | l |L |
модификатор типа аргумента: h – shortint l – longint, если поле type_ char определяет целочисленное преобразование l – double, если поле type_ char определяет вещественное преобразование L – long double |
Символы преобразования при вводе/выводе
Значения type_char |
тип выводимого значения аргумента |
d |
десятичное целое со знаком типа int |
D |
десятичное целое со знаком типа long |
E,e |
вещественное число типа float, формат [-] d .dddde e[-] ddd |
f |
вещественное число без экспоненты, формат dddd.dddd |
o |
восьмеричное целое типа int |
O |
восьмеричное целое типа long |
i,I |
десятичное, восьмеричное, шестнадцатиричное целое число типа int |
u |
безнаковое десятичное целое типа unsignedint |
U |
безнаковое десятичное целое типа unsignedlong |
x,X |
шестнадцатиричное число типа int |
s |
cтрока символов |
c |
отдельный символ |
% |
символ процента |
n |
указатель на целое |
p |
указатель в 16-ричной форме: YYYY : ZZZZ – для дальних адресов; ZZZZ – для ближних адресов |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.