
Функції форматного вводу і виводу
Форматний вивід даних
Для виводу форматованих даних, як правило, застосовуються функції printf і fprintf, оголошені в модулі stdio.h. Перша функція записує дані у стандартний потік виводу – stdout, а друга – у заданий файл або потік. Аргументами функції printf є:
рядок, який необхідно вивести на екран (якщо необхідно, також, вивести значення деяких змінних, то цей рядок повинен містити елементи форматування);
перелік змінних, значення яких необхідно вивести на екран.
Для кожної змінної з переліку формат задається за наступною загальною схемою (у трикутних дужках записані обов’язкові, а у квадратних – необов’язкові поля):
<%>[прапори][ширина][.точність][h|l]<специфікатор>
У найпростішому випадку вказується лише знак проценту і специфікатор. Обов’язкове поле специфікатора вказує на спосіб інтерпретації змінної як символу, рядка або числа. Перелік деяких специфікаторів, підтримуваних функцією printf, представлений в наступній таблиці:
Специфікатор |
Тип |
Формат виводу |
c |
int |
Символ (unsigned char) |
d, i |
int |
Десяткове ціле число із знаком |
o |
int |
Вісімкове ціле число без знаку |
u |
int |
Десяткове ціле число без знаку |
x, X |
int |
Шістнадцяткове ціле число без знаку (літери маленькі або великі) |
e, E |
float, double |
Число з плаваючою точкою у вигляді: [–] m.ddd e ± xxx або [–] m.ddd E ± xxx |
f |
float, double |
Число з плаваючою точкою у вигляді: [–] m.ddd e ± xxx або [–] m.ddd E ± xxx |
p |
void* |
Адреса покажчика (виводиться у форматі X) |
s |
char* |
Рядок символів (виводиться до символа з кодом нуль – ‘\0’) |
Приклад:
int Count;
float Price, Cost;
...
printf (“Кількість товару складає %d одиниць”, Count);
printf (“При ціні %f гр вартість складає %f гр”, Price, Cost);
Необов’язкове поле “ширина” задає мінімальну ширину (в символах) поля виводу. Якщо кількість символів, що виводяться, менша за вказане значення ширини, то поле доповнюється зліва або справа пропусками або нулями залежно від прапора.
Необов’язкове поле точність інтерпретується наступним чином:
при виводі чисел форматів e, E і f визначає кількість цифр після десяткової точки (остання цифра округляється);
при виводі цілих чисел визначає мінімальну кількість цифр (якщо цифр недостатньо, число доповнюється нулями);
при виводі рядків визначає максимальну кількість символів, зайві символи не виводяться.
Необов’язкові модифікатори h і l визначають розмірність цілочисельної змінної: h відповідає short, а l – long.
В наступній таблиці представлені прапори функції printf.
Прапор |
Призначення |
– |
Якщо число виведених символів менше вказаного, результат вирівнюється за лівою границею поля виводу |
+ |
При виводі чисел із знаком знак відображається завжди |
0 |
Якщо перед значенням поля “ширина” знаходиться символ ‘0’, то число, яке виводиться, доповнюється нулями до мінімальної ширини поля виводу |
пропуск |
Якщо виводиться додатнє число із знаком, то перед ним ставиться пропуск |
# |
Для чисел форматів o, x та X означає додавання нулів. Для чисел форматів e, E і f задає наявність десяткової точки, навіть коли за нею не слідують значущі цифри |