Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Форматированный консольный ввод/вывод

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

printf()

Функция printf() имеет следующий прототип: int printf(const char *форматная_строка,...);

Первый аргумент форматная_строка определяет способ вывода последующих аргументов. Он часто называется форматной строкой и содержит два типа элементов: символы, выводимые на экран, и спецификаторы формата, определяющие способ вывода аргументов, следующих за форматной строкой. Спецификаторы формата начинаются со знака процент, за которым следует код формата, Спецификаторы формата приведены в таблице.

Таблица: Спецификаторы формата функции printf()

Код

Формат

%c

Символ

%d

Знаковое десятичное целое число

%i

Знаковое десятичное целое число

Научная нотация (е - строчная)

Научная нотация (Е - прописная)

%f

Десятичное число с плавающей точкой

%g

Использует или %е, или %f, соответствующее более короткому представлению

%G

Использует или %Е, или %F, соответствующее более короткому представлению

%o

Беззнаковое восьмеричное число

%s

Строка символов

%u

Беззнаковое десятичное число

Беззнаковое шестнадцатиричное число (строчные буквы)

Беззнаковое шестнадцатиричное число (прописные буквы)

Вывод указателя

%n

Ассоциированный аргумент - это указатель на целое, в которое записывается число уже выведенных символов

%%

Выводит знак %

Должно быть полное соответствие между числом аргументов и числом спецификаторов формата, а также спецификаторы формата и аргументы должны соответствовать друг другу слева направо. Например, вызов: printf("Hi %с %d %s", 'c', 10, "there!"); отображает «Hi с 10 there!». Функция printf() возвращает число напечатанных символов. В случае ошибки она возвращает EOF.

Печать символов

Для печати отдельных символов используйте % с. Это приводит к выводу соответствующего аргумента в не модифицированном виде на экран. Для печати строки используйте %s.  

Вывод чисел

Можно использовать или %d, или %i для отображения знакового десятичного числа. Эти форматы спецификаторов эквивалентны и присутствуют оба по историческим причинам.

Для вывода беззнакового значения надо использовать %u.

Спецификатор формата %f позволяет отображать числа с плавающей точкой.

Спецификаторы %е и %Е сообщают printf() о необходимости вывода вещественного числа в научной нотации. Числа, представляющиеся в научной нотации, имеют следующий вид: x.ddddd Е+/-yy Если необходимо вывести символ «E», используйте %Е, иначе используйте %е.

Можно указать функции printf() использовать %f или %е, используя спецификаторы формата %g или %G. В результате этого printf() выбирает спецификатор формата, приводящий к более короткой форме выдачи информации. Если необходимо, чтобы в научной нотации присутствовало «Е», используйте %G, иначе используйте %g. Следующая программа демонстрирует эффект использования спецификатора формата %g: #include <stdio.h> int main(void) { double f; for(f=1.0; f<1.0e+10; f=f*10) printf ("%g", f); return 0; } В результате ее работы получаем: 1 10 100 1000 10000 100000 1e+06 1e+07 1е+08 1е+09

Можно отображать беззнаковые целые в восьмеричном или шестнадцатиричном форматах, используя %о и %х соответственно. Поскольку шестнадцатиричные числа используют буквы от А до F для представления чисел от 10 до 15, следует использовать спецификатор формата %X для вывода прописных букв, а %х - для строчных, как показано ниже: #include <stdio.h> int main(void) { unsigned num; for(num=0; num<255; num++) { printf("%o ", num); printf("%x", num); printf("%X", num); } return 0;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]