- •Глава 1 элементы языка
- •Вывод: Пробелы употреблять везде, где это допустимо и улучшает читабельность программы.
- •Введение в си
- •Глава 2 элементы данных
- •Глава 3 массивы и структуры
- •Глава 4 операции и выражения
- •Глава 5 основные операторы
- •Формат: ;
- •Глава 6. Ввод – вывод данных
- •Форма представления одного данного
- •6.2 Функции getchar(), putchar(), getch()
- •Глава 7. Блоки и процедуры
- •Глава 8 Препроцессор
- •Вычисление квадратичной формы
- •Глава 9 Символьная информация и строки
- •9.3 Строки или строковые константы
- •Глава 10 фAйлы
Глава 6. Ввод – вывод данных
Ввод–вывод – это передача данных между переменными программы(ОП) и внешней памятью(ВП).
В Си предусмотрен только форматный обмен.
<stdio.h> – файл прототипа.
Ввод:
Вывод:
Буфер имеет конечный размер и считывание из него происходит только после нажатия клавиши <Enter>.
Формат основных функций
{scanf | printf}(<управляющая строка>[, <список_данных>] );
<управляющая строка> := “[<произвольный текст>][<спецификации>]”
<список_данных> := <имя_переменной> [ , <имя_переменной> [, …] ]
Элементы списка данных scanf( ) – адреса переменных, значения которых задаются, поэтому необходимо использовать операцию &(нахождение адреса).
Возвращаемые значения: printf ( )– число выводимых символов (байтов), scanf( ) – число введенных скалярных значений.
Управляющая строка
Содержит спецификации для функций ввода-вывода.
Формат ОДНОЙ спецификации
% [ <флаги> ] [W] [. D] [l] <тип>
% [признаки] [ширина_поля] [ .точность ] [модификатор] с_n.
Флаги для printf (для scanf не используются):
– данное прижимается к левой границе поля вывода;
+ число ВСЕГДА со знаком (актуально для положительных данных, в которых по умолчанию знак опускают, отрицательные всегда изображаются со знаком).
W – размер поля данного в символах (байтах).
D – обычно характеризует точность представления значения при выводе, ПРИ ВВОДЕ НЕ ИСПОЛЬЗУЕТСЯ (количество цифр, которые необходимо вывести справа от десятичной точки для типов float и double).
Модификаторы:
l – модификатор "длинных"(long для целых, double для чисел с плавающей точкой), указывает, что соответствующий элемент имеет тип long.
h – модификатор “коротких”, указывает, что соответствующий элемент имеет тип short int.
6.1.1 Спецификация d (целые десятичные цифры)
ВВОД Формат спецификации
% [W] [l] d
W – максимальное число считываемых символов.
l – модификатор для long.
Пример.
Внешнее представление |
Спецификация |
Значение в памяти |
165<пробел> |
d |
165 |
+165<Enter> |
d |
165 |
165 |
2 d |
16 |
165 |
1 d |
1 |
431921 |
l d |
431921 |
– 431921 |
4 l d |
– 431 |
+ 431921<пробел> |
10 l d |
431921 |
ВЫВОД Формат спецификации
% [<флаги>] [W] [ .D] [l] d
D – минимальное число выводимых символов.
Пример.
Значение в памяти |
Спецификация |
Внешнее представление |
2475 |
d |
2475 |
2475 |
+ d |
+ 2475 |
2475 |
<пробел> d |
<пробел> 2475 |
– 2475 |
d |
–2475 |
– 2475 |
+d |
–2475 |
–2475 |
<пробел>d |
–2475 |
–2475 |
3d |
–2475 |
2475 |
10d |
_ _ _ _ _ _ 2475 |
2475 |
+10d |
_ _ _ _ _+2475 |
2475 |
–10d |
2475_ _ _ _ _ _ |
2475 |
–+10d |
+2475_ _ _ _ _ |
2475 |
10.5d |
– – – – – 02475 |
–24 |
10.5d |
_ _ _ _ – 00012 |
–24 |
.5d |
–00024 |
3 |
5.0d |
_ _ _ _ 3 |
–478126 |
10ld |
_ _ _–478126 |
–478126 |
–10ld |
–478126_ _ _ |
478126 |
+–10ld |
+478126_ _ _ |
Спецификация f (вещественные числа с плавающей точкой)
ВВОД Формат спецификации
% [W] [l] f
l – для double.