Организация потокового ввода вывода. Процедурно-ориентированные средства работы с потоками

Страницы работы

13 страниц (Word-файл)

Содержание работы

Организация потокового ввода вывода

            Классификация средств вывода:

1. По уровню абстрагирования от деталей организации взаимодействия с внешними устройствами:

1)  высокий, или уровень потоков и объектов типа файл;

2)  средний, или уровень стандартных системных устройств ввода/вывода (консоль и принтер);

3)  низкий – уровень ОС при работе с бинарными файлами и портами ввода/вывода.

2. С позиции стиля программирования:

1)  процедурно-ориентированная система ввода/вывода в С;

2)   объектно-ориентированная система ввода/вывода в С++.

3. По способу создания различают:

1)  автоматически создаваемые потоки, которые связаны со стандартными системными устройствами ввода/вывода, которые называются консольными или стандартными;

2)  явно создаваемые потоки для обмена данными с файлами (файловые потоки);

3)  явно создаваемые потоки для обмена данными со строками в оперативной памяти (строковые потоки).

4. По направлению передачи данных различают: 

1)  входные потоки;

2)  выходные потоки;

3)  двунаправленные потоки.

5. По наличию форматирования различают:

1)  форматированные потоки;

2)  неформатированные потоки для работы со строками и символами. Строкоориентированные потоки служат для работы с текстовыми файлами, символьные – с бинарными файлами.

Процедурно-ориентированные средства работы с потоками.

Библиотека stdio.h

Ввод/вывод через стандартные потоки.

При подключении библиотеки 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 – для ближних адресов

Похожие материалы

Информация о работе

Тип:
Конспекты лекций
Размер файла:
617 Kb
Скачали:
0