
- •Ввод-вывод в языке с
- •Потоковые функции
- •Открытие файлов и потоков
- •Переадресация ввода-вывода
- •Изменение буфера потока
- •Форматный вывод данных
- •Функция printf()
- •Поиск в файлах с помощью функций fseek( ), ftell( ) и rewind()
- •Синхронный и асинхронный ввод/вывод
- •3. Позиционирование указателя файла.
- •6. Запись данных в файл
- •Блокировка и разблокировка файла
- •Асинхронный режим чтения и записи файлов
- •Стандартные потоки cin, coutи cerr
- •Флаги и функции форматирования
- •Файловый ввод-вывод
- •Флаг Назначение
- •Файловый ввод
- •Файловый вывод
- •Вот результаты работы программы:
- •Двоичные файлы
- •Буферы потоков
Функция printf()
В следующей программе демонстрируется, как правильно применять различные спецификаторы форматирования к переменным четырех типов: символу, массиву символов, целому числу и числу с плавающей запятой. Программа содержит достаточно подробные комментарии, а, кроме того, выводимые строки пронумерованы, чтобы легче было обнаружить, какая из функций их сгенерировала.
/* * printf.c * Эта программа на языке С демонстрирует применение * спецификаторов форматирования функции printfO. */
#include <stdio.h>
void main () {
char с = 'А',
psz[]= "Строка для экспериментов"; int iln = 0,
ivalue = 1234; double dPi = 3.14159265;
/* 1 — вывод символа с */ printf("\n[%2d] %c",++iln, c) ;
/* 2 — вывод ASCII-кода символа с */ printf<"\n[%2d] %d",++iln, c);
/* 3 — вывод символа с ASCII-кодом 90 */ printf("\n[%2d] %c",++iln, 90);
/* 4 — вывод значения ivalue в восьмеричной системе */ printf("\n[%2d] %o",++iln, ivalue);
/* 5 — вывод значения ivalue в шестнадцатеричной */ /* системе с буквами в нижнем регистре */ printf("\n[%2d]%х",++iln, ivalue);
/* 6 — вывод значения ivalue в шестнадцатеричной */ /* системе с буквами в верхнем регистре */ printf("\n[%2d]%Х",++iln, ivalue);
/* 7 — вывод одного символа, минимальная ширина поля равна 5, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%2d]%5c",++iln, с); .
/* 8 -- вывод одного символа, минимальная ширина поля равна 5, */ /* выравнивание влево с дополнением пробелами */ printf("\n[%2d]%-5c",++iln, с);
/* 9 — вывод строки, отображаются 24 символа */ printf("\n[%2d]%s",++iln, psz);
/* 10 — вывод минимум 5-ти символов строки, отображаются 24 символа */ printf ("\n[%d]%5s",++iln, psz);
/* 11 — вывод минимум 38-ми символов строки, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%d]%38s",++iln, psz);
/*12 — вывод минимум 38-ми символов строки, */ /* выравнивание влево с дополнением пробелами */ printf("\n[%d]%-38s",++iln, psz);
/* 13 — вывод значения ivalue, по умолчанию отображаются 4 цифры */ printf("\n[%d]%d",++iln, ivalue);
/* 14 — вывод значения ivalueсо знаком */ printf("\n[%d]%+d",++iln, ivalue);
/* 15 — вывод значения ivalueминимум из 3-х цифр, */ /* отображаются 4 цифры*/ printf("\n[%d]%3d",++iln, ivalue);
/* 16 — вывод значения ivalueминимум из 10-ти цифр, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%d]%10d",++iln, ivalue);
/* 17 — вывод значения ivalueминимум из 10-ти цифр, '*/ /* выравнивание влево с дополнением пробелами */
printf("\n[%d]%-10d",++iln, ivalue);
/* 18 — вывод значения ivalue минимум из 10-ти цифр, */
/* выравнивание вправо с дополнением нулями */ printf ("\n[%d]%010d",++iln, ivalue);
/* 19 — вывод значения dPiс форматированием по умолчанию */ printf("\n[%d]%f",++iln, dPi); .
/* 20 — вывод значения dPi, минимальная ширина поля равна 20, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%d]%20f",++iln, dPi) ;
/* 21 — вывод значения dPi, минимальная ширина поля равна 20, */ /*'выравнивание вправо с дополнением нулями */ printf("\n[%d]%020f",++iln, dPi) ;
/* 22 — вывод значения dPi, минимальная ширина поля равна 20, */ /* выравнивание влево с дополнением пробелами */ printf("\n[%d]%-20f",++iln, dPi);
/* 23 — вывод 19-ти символов строки, */ /* минимальная ширина поля равна 19 */ printf("\n[%d]%19.19s",++iln, psz);
/* 24 — вывод первых двух символов строки */ printf("\n[%d]%,2s",++iln, psz);
/*'25 — вывод первых двух символов строки, минимальная ширина поля */ /* равна 19, выравнивание вправо с дополнением пробелами '*/ printf("\n[%d]119.2s",++iln, psz);
/* 26 — вывод первых двух символов строки, минимальная ширина поля */ /* равна 19, выравнивание влево с дополнением пробелами */ printf("\n[%d]%-19.2s",++iln, psz);
/* 27 "- вывод первых шести символов строки, минимальная ширина поля */ /* равна 19, выравнивание вправо с дополнением пробелами */ printf ("\n[%d]%*.*s",++iln, 19,6, psz);
/* 28 — вывод значения dPi, минимальная ширина поля */ /* равна 10, 8 цифр после десятичной точки */ printf("\n[%d] %10.8f",++iln, dPi);
/* 29 — вывод значения dPi, минимальная ширина поля */ /* равна 20, 2 цифры после десятичной точки, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%d]%20.2f",++iln, dPi) ;
/*' 30 — вывод, значения dPi, минимальная ширина поля */ /* равна 20, 4 цифры после десятичной точки, */ /* . выравнивание влево с дополнением пробелами */ printf("\n[%d]%-20.4f",++iln, dPi);
/* 31 — вывод значения dPi, минимальная ширина поля */ /* равна 20, 4 цифры после десятичной точки, */ /* выравнивание вправо с дополнением пробелами */ printf("\n[%d]%20.4f",++iln, dPi);
/* 32 — вывод значения dPi, минимальная ширина поля */ /* равна 20, 2 цифры после десятичной точки, */ /* выравнивание вправо с дополнением пробелами, */ /* научный формат (с экспонентой) */ printf("\n[%d]%20.2e",++iln, dPi);
Результат работы программы будет выглядеть следующим образом:
[ 1] А
[ 2] 65
[ 3] Z
[ 4] 2322
[ 5] 4d2
[ 6] 4D2
[ 7] А
[ 8] А
[ 9] Строка для экспериментов
[10] Строка для экспериментов
[11] Строка для экспериментов
[12]Строка для экспериментов
[13]1234 .
[14] +1234
[15]1234
[16] 1234
[17]1234
[18] 0000001234
[19]3.141593
[20] 3.141593
[21]0000000000003.141593
[22] 3.141593
[23]Строка для эксперим
[24] Ст
[25] Ст
[26] Ст
[27] Строка
[28]3.14159265
[29] 3.14
[30]3.1416
[31] 3.1416
[32] 3.14е+000