Форматний ввід/вивід у мові С/С++
ФУНКЦІЇ ВВОДУ/ВИВОДУ МОВИ С
У мові С++ немає вбудованих засобів вводу/виводу – вони здійснюються
за допомогою функцій, типів та об’єктів, що містяться у стандартних бібліотеках.
Використовується два способи: функції, успадковані з мови С та об’єкти С++.
Основні функції вводу/виводу в стилі С, опис яких міститься
у заголовному файлі <stdio.h>:
рrintf (<керуючий рядок>, <список аргументів>);
Керуючий рядок береться
у лапки і вказує компілятору вигляд інформації, що виводиться. Вона може містити
специфікації перетворення і керуючи або escape-символи.
Специфікація перетворення
має такий вигляд:
% <прапор> <розмір поля . точність> специфікація,
де
прапор може набувати наступних значень:
-
вирівнювання вліво числа, що виводиться (за замовчуванням виконується вирівнювання
вправо);
+
виводиться знак додатного числа;
розмір
поля – задає мінімальну ширину поля, тобто довжину
числа. Якщо ширини поля недостатня, автоматично виконується його розширення;
точність
– задає точність числа, тобто кількість цифр його дробової частини;
специфікація
вказує на вигляд інформації, що виводиться. У таблиці 2.1 наведено основні формати
функції друку.
Таблиця 2.1
Формат
|
Тип
інформації, що виводиться
|
%d
|
десяткове
ціле число
|
% і
|
для
виведення цілих чисел зі знаком (printf (“a=%i”, -3));
|
%u
|
для
виводу беззнакових цілих чисел (printf(“s=%u”, s))
|
%c
|
один
символ
|
%s
|
рядок
символів
|
%e
|
число
з плаваючою крапкою (експоненційний запис)
|
%f
|
число з плаваючою крапкою (десятковий запис) (printf(“b=%f\n,
c=%f\n, d=%f\n”, 3.55, 82.2, 0.555 ));
|
%u
|
десяткове
число без знака
|
Керуючий
рядок може містити наступні керуючі символи:
\n – перехід
на новий рядок;
\t – горизонтальна
і \v – вертикальна табуляція;
\b – повернення
назад на один символ;
\r – повернення
на початок рядка;
\a – звуковий
сигнал;
\”
–лапки;
\?
– знак питання;
\\
- зворотний слеш.
Список аргументів - об¢єкти, що друкуються (константи,
змінні). Кількість аргументів та їх типи повинні відповідати специфікаціям перетворення
в керуючому рядку.
Приклад 1.
#include
<stdio.h>
#define
PI 3.1415926
void
main()
{
int
number=5, cost=11000, s=-777;
float
bat=255, x=12.345;
printf
("%d студентів з¢їло %f бутербродів.\n", number, bat);
printf
("Значення числа pi рівне%f.\n", pi);
printf
("Вартість цієї машини %d%s\n", cost,"у.е");
printf
("x=%-8.4f s=%5d%8.2f ", x, s, x);
}
В
результаті виконання останньої функції printf() на екрані буде виведено:
х=12.3450
s= -777 12.34
Функція
scanf передбачена для форматного вводу інформації довільного вигляду. Загальний
вигляд функції:
scanf (<керуючий
рядок>, < список адрес>);
На
відміну від функції виводу printf(), scanf() використовує у списку
адреси змінних, для одержання яких перед іменем змінної ставиться символ ”&”,
що позначає унарну операцію одержання адреси. Для вводу значень рядкових змінних
символ ”&” не використовується. При використанні формату %s рядок вводиться
до першого пропуску. Вводити дані можна як в одному рядку через пропуск, так і в
різних рядках.
Дану
особливість ілюструє відповідна частина програми:
int
course;
float
grant;
char
name[20];
printf
( "Вкажіть ваш курс, стипендію, ім¢я
\n");
scanf
( "%d%f", &course, &grant);
scanf
( "%s", name); /* ”&” відсутній при зазначенні масиву символів */
Для зміни кольору
тексту використовують функції із файла <conio.h>: clrscr() –
очищує екран; textcolor(Колір) – задає колір символів; textbackground
(Колір) – встановлює колір фону. Вивід тексту на екран здійснюється за допомогою
функції cprintf(), яка використовується аналогічно printf(). Зверніть
увагу на те, що перехід на початок нового рядка у цій функції здійснюється за допомогою
комбінації ”\n\r”.
Колір можна задати
за допомогою цілої або іменованої константи, перелік яких наводиться у таблиці 2.2.
Таблиця 2.2
Колір
|
Константа
|
Значення константи
|
Чорний
|
BLACK
|
0
|
Синій
|
BLUE
|
1
|
Зелений
|
GREEN
|
2
|
Червоний
|
RED
|
4
|
Фіолетовий
|
MAGENTA
|
5
|
Сірий
|
GREY
|
8
|
Блакитний
|
LIGHTBLUE
|
9
|
Помаранчевий
|
LIGHTRED
|
12
|
Жовтий
|
YELLOW
|
14
|
Білий
|
WHITE
|
15
|
Немає коментарів:
Дописати коментар