Форматированный ввод-вывод
Для форматированного вывода в поток предназначена функция
fprintf(FILE* stream, const char* formatted_string, arguments, …)
Для подстановки значений переменных в строку вывода используют символы подстановки (спецификаторы формата), начинающиеся с символа «%»:
%[флаги][размер][.точность][модификатор_длины]тип_данного[2]
Флаги:
«-» – выравнивание результата по левому краю (по умолчанию – по правому относительно заданного количества выводимых символов);
«+» – результат всегда начинается со знака (+/-);
«#» – особая форма отображения результата.
Размер показывает, сколько символов отводится для записи результата, может быть представлен в следующих форматах:
n – минимум n символов отводится для записи числа, недостающие символы заменяются пробелами;
0n – то же, но недостающие символы заменяются нулями;
* – список аргументов содержит размеры данных.
Точность показывает для вещественных чисел количество знаков после десятичной точки.
Модификатор длины может принимать одно из значений:
F – «длинный» указатель;
N – «короткий» указатель;
h – short int;
l – long int, double;
L – long double.
Тип данного может принимать одно из значений:
%d, %i – знаковое десятичное целое;
%u – беззнаковое десятичное целое;
%o – беззнаковое восьмеричное целое;
%x, %X – беззнаковое шестнадцатеричное целое;
%f – знаковое вещественное;
%e, %E – знаковое вещественное в экспоненциальной форме;
%g, %G – знаковое вещественное, форма зависит от числа, размера и точности;
%c – символ;
%s – строка;
%% – символ «%»;
%n, %p – указатель.
Аргументы, передаваемые в функцию, должны соответствовать количеству и типу спецификаторам формата.
Для форматированного ввода данных из потока используется функция
fscanf(FILE* stream, const char* formatted_string, arguments, …)
Строка также может содержать спецификаторы формата, при этом:
– при невозможности предобразования строки в число, число принимает значение ноль;
– строкой считается слово до разделителя (пробел, табуляция, перевод строки).
Для стандартных потоков определены аналогичные функции:
printf(const char* formatted_string, arguments, …)
scanf(const char* formatted_string, arguments, …)
являющиеся аналогами описанных ранее функций, разница заключается в том, что используются стандартные потоки ввода и вывода (stdin, stdout) которые в качестве аргументов не указываются.
Определены функции, использующие вместо потока строку:
sprintf(char *dest, const char* formatted_string, arguments, …)
sscanf(char *src, const char* formatted_string, arguments, …)
Консольные функции.
void clreol() – удаление символов от курсора до конца строки.
void clrscr() – очистка экрана.
int cprintf(char *format [,..,]) – вывод строки с учётом параметров консоли.
void gotoxy(int x, int y) – перемещение курсора в позицию (x,y) экрана.
void textbackground(int c) – цвет фона.
void textcolor(int c) – цвет шрифта.
void textmode(int m) – режим (C40, C80, C4350).