
- •1.Ввод/вывод на консоль в стиле с
- •Форматный ввод / вывод на консоль
- •Спецификаторы преобразования
- •Ввод чисел
- •Ввод целых значений без знака
- •Чтение одиночных символов с помощью scanf()
- •Чтение строк
- •Ввод адреса
- •Спецификатор %n
- •Использование набора сканируемых символов
- •Пропуск лишних разделителей
- •Символы в управляющей строке, не являющиеся разделителями
- •Функции scanf() необходимо передавать адреса
- •Модификаторы форматат
- •Подавление ввода
- •Что внутри iostream.H
- •Использование cout
- •Использование символа-заполнителя
- •Управление цифрами значений с плавающей точкой
- •Вывод и ввод одного символа за один раз
- •Чтение ввода с клавиатуры по одному символу за раз
- •Чтение с клавиатуры целой строки
- •Что вам необходимо знать
Спецификаторы преобразования
Каждый спецификатор формата ввода начинается со знака %, причем спецификаторы формата ввода сообщают функции 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.