Загрузка...

СТАНДАРТНЫЕ ФУНКЦИИ ВВОДА И ВЫВОДА


Функции ввода — вывода служат для ввода данных в программу с клавиатуры и вывода их на экран.
1. Printf (). Предназначена для вывода данных на экран
Printf («Управляющая строка» , список аргументов);
Аргументами могут быть переменные, константы, выражения.
Управляющая строка — строка символов, показывающая, как должны быть напечатаны параметры. Обязательно берётся в кавычки. Состоит из литерных констант и спецификаций преобразования (каждому формату соответствует тип выводимой с их помощью информации):
%d – десятичное целое число %f – плавающий формат
%c – один символ %lf – двойной точности
%s – строка символов %e – экспоненциальная форма плав. формата
%i – целое %o – восьмиричой с.с.
%u – беззнаковое целое %x – шестнадцатеричной с.с.
%g – плавающий формат (используется вместо %f и %e, если он короче)

ПР.: printf(«Число pi равно %f «, PI);
Т.о. управляющая строка содержит информацию двух видов:
1) печатаемые символы;
2) идентификаторы данных, называемые «спецификациями преобразования» (%…)
Каждому аргументу, следующему за управляющей строкой, должна соответствовать cвоя спецификация преобразования (аргументу PI соответствует с.п. %f).
Если необходимо просто напечатать какую-то фразу, то спецификация преобразование не используется. (printf(«Введите любую букву»).
Также можно обойтись и без комментариев, если просто нужно вывести какие-либо данные.( printf(«%с%d”, ‘$’, num). В этом примере первый аргумент является символьной константой, а второй – переменная.
Поскольку символ % используется в этой функции для идентифицирования спецификаций преобразования, то компилятор всегда его так и воспринимает. Поэтому если нужно напечатать сам символ %, то его нужно печатать дважды %% (%d%%).

Модификаторы спецификаций преобразования.

Между знаком % и символом могут находиться так называемые модификаторы:
— аргумент печатается с левой позиции поля заданной ширины. Пр.: %-10d (обычно аргумент печатается в самой правой позиции поля)
Цифры указывают ширину поля. Если число больше, то оно выходит за ширину поля. Для данных с плавающей точкой – число печатаемых цифр справа от точки.
%4.2f — количество печатаемых цифр после запятой 2, поле шириной 4 позиции.
/%d/ /336/ — «выбор по умолчанию» (поле печати равно количеству цифр)
%2d /336/ — ширина поля указана равной 2, но число состоит из 3 цифр, поэтому поле расши ряется
%10d / 336/
%-10d /336 /
%f /1234.560059/ — «выбор по умолчанию» (6 цифр после точки)
%e /1.234560E+03/ — «выбор по умолчанию» (1 цифра слева и 6 справа от точки)
%4.2f /1234.56/
%3.1f /1234.6/ (происходит округление)
%10.3f / 1234.560/
%10.3e / 1.234E+03/
Для строк:
/%s/ /’Выдающееся исполнение’/ 22 c.
/%25.s / Выдающееся исполнение’/
% 25.5s / Выдаю/
%-25.5 s /Выдаю /
С помощью спецификаций можно преобразовывать данные:
printf(“%d”,336); — будет выведено число 336. Поменяем в этой строке спецификации:
% o — выведет число 520(в восьмеричной системе)
% x — число 150(в шестнадцатеричном коде)
При использовании % d печать отрицательного числа (-336) без проблем. А использование % u не приводит к отбрасыванию знака. Здесь используется дополнительный код. Числа от 0 до 32767 отображаются обычным образом, а от 32768-65536 представляют отрицательные числа. Причем 65535 кодирует -1 , 65534 число –2 и т.д. Поэтому если ввести число (-336) и указать спецификатор % u, то выведется число 65200 (65536 — 336 = 65200)

Используя функцию printf и различные спецификаторы, можно определять коды ASCII символов:
printf (» %d %c «, ‘A’, ‘A’); На экране 65 A

2. sсanf(). Функция ввода данных с клавиатуры.
Используются те же спецификаторы, что и printf(). В качестве аргументов указываются адреса переменных. При вводе строковых переменных, знак & не пишется.
scanf(«%d»,&num);

3. Функции ввода/вывода одного символа getchar(), putchar(). Объявлены в заголовочном файле stdio.h. Функция getchar() получает один символ с клавиатуры и передает его программе (аргументов не имеет), а putchar() – получает один символ из программы и пересылает его для вывода на экран (имеет один аргумент – это может быть одиночный символ, переменная или функция).
# include <stdio.h>
main() {
char ch;
ch = getchar();
putchar(ch); putchar (getchar());
}

4. Функции небуфиризированного ввода с клавиатуры (прямой ввод на экран без нажатия клавиши ENTER). Объявлены в заголовочном файле <conio.h>.
char ch=getch(); ввод без эхоотображения.
char ch=getche(); с эхоотображением на экране.

Загрузка...