Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ввод_вывод на консоль C++.doc
Скачиваний:
4
Добавлен:
17.08.2019
Размер:
242.18 Кб
Скачать

Спецификаторы преобразования

Каждый спецификатор формата ввода начинается со знака %, причем спецификаторы формата ввода сообщают функции scanf() тип считываемых данных. Перечень этих кодов (т.е. литер-спецификаторов) приведен в табл. 8.3. Спецификаторам преобразования в порядке слева направо ставятся в соответствие элементы списка аргументов. Рассмотрим некоторые примеры.

Таблица 8.3. Спецификаторы преобразования для функции scanf()

Код

Значение

%a

Читает значение с плавающей точкой (только С99)

%c

Читает одиночный символ

%d

Читает десятичное целое число

%i

Читает целое число как в десятичном, так и восьмеричном или шестнадцатеричном формате

%e

Читает число с плавающей точкой

%f

Читает число с плавающей точкой

%g

Читает число с плавающей точкой

Читает восьмеричное число

%s

Читает строку

%x

Читает шестнадцатеричное число

%p

Читает указатель

%n

Принимает целое значение, равное количеству уже считанных символов

%u

Читает десятичное целое число без знака

%[]

Читает набор сканируемых символов

%%

Читает знак процента

Ввод чисел

Для чтения целого числа используйте спецификатор преобразования %d или %i. A для чтения числа с плавающей точкой, представленного в стандартном или экспоненциальном виде, используйте спецификатор преобразования %e, %f или %g. (Кроме того, для чтения числа с плавающей точкой стандарт С99 разрешает использовать также спецификатор преобразования %a.)

Функцию scanf() можно использовать для чтения целых значений в восьмеричной или шестнадцатеричной форме, применяя для этого соответственно команды форматирования %o и %x, последняя из которых может быть как на верхнем, так и на нижнем регистре. Когда вводятся шестнадцатеричные числа, то буквы от А до F, представляющие шестнадцатеричные цифры, должны быть на том же самом регистре, что и литера-спецификатор. Следующая программа читает восьмеричное и шестнадцатеричное число:

#include <stdio.h>

int main(void)

{

int i, j;

scanf("%o%x", &i, &j);

printf("%o %x", i, j);

return 0;

}

Функция scanf() прекращает чтение числа тогда, когда встречается первый нечисловой символ.

Ввод целых значений без знака

Для ввода целого значения без знака используйте спецификатор формата %u. Например, операторы

unsigned num;

scanf("%u", &num);

выполняют считывание целого числа без знака и присваивают его переменной num.