
- •3.1.1. Функции посимвольного ввода-вывода
- •3.1.1.1.Функции посимвольного ввода
- •Функции посимвольного стандартного ввода Функция getchar
- •Функция fgetchar
- •Функция ungetch
- •Функция getch
- •Функция getche
- •Функции посимвольного потокового ввода Функция fgetc
- •Функция getc
- •Функция ungetc
- •3.1.1.2. Функции посимвольного вывода
- •Функции стандартного вывода Функция putchar
- •3.1.2.Форматированный ввод-вывод
- •3.1.2.1.Форматированный ввод Функция scanf
- •Функция cscanf
- •Управляющая строка функций ввода
- •Модификатор
- •Символы преобразования и их смысл Тип переменной int
- •Тип переменной char
- •Тип переменной char*
- •Тип переменной float
- •3.1.2.2.Форматированный вывод Функция printf
- •Функция cprintf
- •Отдельные поля спецификации преобразования Флаги
- •Точность
- •Модификатор
- •Символы преобразования и их смысл Тип переменной int
- •Тип переменной char
- •Тип переменной char*
- •Тип переменной float
- •3.1.3. Функции построчного ввода-вывод
- •3.1.3.1.Функции построчного ввода Функция cgets
- •3.1.3.2.Функции построчного вывода Функция cputs
- •Лекция №2(продолжение)
- •4.1. Библиотека iostream
- •Буферизованные потоки (класс streambuf )
- •Потоковый класс ios
- •4.2.2. Потоковый ввод
- •4.3. Форматирование потокового ввода-вывода
- •4.3.1. Форматирующие функции-элементы
- •4.3.2. Флаги форматирования
3.1.2.2.Форматированный вывод Функция printf
Две функции: printf для вывода и scanf для ввода (следующий раздел) позволяют преобразовывать численные величины в символьное представление и обратно. Они также позволяют генерировать и интерпретировать форматные строки
Форма записи:
#include <stdio.h>
int printf(const char *format[, argument, ...]);
или упрощенно
printf(УправляющаяСтрока, arg1, arg2, ...)
Функция преобразует, определяет формат и печатает свои аргументы в стандартный вывод под управлением форматной (или управляющей) строки. Управляющая строка содержит два типа объектов: обычные символы, которые просто копируются в выходной поток, и спецификации преобразований, каждая из которых вызывает преобразование и печать очередного аргумента printf.
Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Спецификация преобразования состоит из отдельных полей:
%[флаг][ширина] [. точность ][F|N|h|l ] <символ типа преобразования>
Функция cprintf
Функция
#include <conio.h>
int cprintf(const char *format [, arg, ...]);
выполняет вывод с преобразованием по заданному формату. Является аналогом функции стандартной библиотек printf(), но вывод осуществляется в пределах заданного окна. В отличие от printf() функция сprintf() иначе реагирует на специальный символ ‘\n’: курсор переводится на новую строку, но не возвращается к левой границе окна. Поэтому для перевода курсора на начало новой строки текстового окна надо вывести последовательность символов перевода каретки и перехода на следующую строку CR-LF (0х0d, 0x0a) или '\r\n’. Остальные спецсимволы воздействуют на курсор так же, как и для функции стандартного ввода/вывода. Функция возвращает число выведенных байтов, а не число обработанных полей, как это делает функция printf().
Пример: Вывести на экран 5 раз строку "This is a test".
#include <conio.h>
int main(void)
{ int i;
clrscr();
for (i=0; i<5; i++)
cprintf("This is a test\r\n");
}
Отдельные поля спецификации преобразования Флаги
(-) Знак минус, который указывает о выравнивании преобразованного аргумента по левому краю его поля. Правая сторона выделенного поля дополняется пробелами.
(+) Знак плюс указывает, что выводится знак числа «-» или «+».
(Пробел) Выводится пробел перед числом, если оно положительно. Для отрицательных чисел знак «-» выводится всегда.
(#) Выводится идентификатор системы счисления для целых чисел:
-0 перед числом, выводимым в восьмеричной системе счисления;
-0х или 0Х для чисел, выводимых в шестнадцатеричной с/с;
-ничего для чисел, выводимых в десятичной с/с.
Ширина
(n или 0n)Строка цифр, задающая минимальную ширину поля n. Преобразованное число будет напечатано в поле по крайней мере этой ширины, а если необходимо, то и в более широком. Если преобразованный аргумент имеет меньше символов, чем указанная ширина поля, то он будет дополнен слева (или справа, если было указано выравнивание по левому краю) заполняющими символами до этой ширины. Заполняющим символом обычно является пробел, а если ширина поля указывается с лидирующим нулем, то этим символом будет нуль (лидирующий нуль в данном случае не означает восьмеричной ширины поля).