You are on page 1of 4

ЛЕКЦІЯ № 8

ОСНОВНІ ЗАСОБИ ВВЕДЕННЯ-ВИВЕДЕННЯ ДАНИХ НА МОВІ


ПРОГРАМУВАННЯ С

Виведення даних на екран монітору можна здійснювати за допомогою функції


printf(), яка входить в стандартну бібліотеку функцій мови С – <stdio.h>.

Синтаксис:
#include <stdio.h>
printf(<рядок форматів>,[<арг. 1>,<арг. 2>,…,<арг. n>]);

Рядок форматів визначає, який вид повинні мати дані, котрі виводяться, і може
містити наступні компоненти:
− текстові рядки;
− керуючі послідовності (зворотна коса риса та символ), для керування
виведенням;
− специфікації виведення (знак % та символ), котрі повідомляють функції, яким
чином сприймати та відображати дані.
Текстові повідомлення при виведенні замикаються в подвійні лапки. Наприклад:
printf(“Виведення результатів”);
Крім текстового повідомлення можна виводити і значення змінних, з
використанням керуючих послідовностей та специфікацій виведення. Наприклад:
printf(“\n Корінь рівняння: %d”, x);

8.1 Керуючі послідовності функції printf()

Керуючі послідовності (КП) допомагають розмістити дані на екрані монітору при


виведені, пересуваючи курсор на бажане місце. Для їхньої реалізації використовують
спеціальні символи (табл. 8.1).

Таблиця 8.1 – Запис основних керуючих послідовностей мови та особливих символів


Запис Призначення Запис Призначення
\a Голосовий сигнал \v Вертикальна табуляція
\b Повернення на один символ \\ Зворотна коса риса
назад
\f Перебіг сторінки \? Знак запиту
\n Переведення рядка \’ Одинарні лапки
\r Повернення каретки \” Подвійні лапки
\t Горизонтальна табуляція %% Символ %

Для розриву рядка форматів використовується символ зворотної косої риси.


Наприклад:
printf(“This prints a character, %c \n a \
number, %d \n a floating”,’z’,123);
В рядку форматів можливе використання модифікаторів ширини поля. Наприклад,
%5d – для представлення числа виділяється п’ять знаків. А також модифікаторів точності
для дійсних значень. Наприклад, %5.2f – для представлення числа виділяється всього
п’ять знаків, з них два – після коми.
За замовчення рядок виведення вирівнюється по правому краю поля виведення,
вставка знаку «мінус» після знаку % – означає вирівнювання по лівому краю.
2

Наприклад:
printf(“\%11.6f | \n”, 123.23); _123.230000
printf(“\%-11.6f | \n”, 123.23); 123.000000_

8.2 Специфікації виведення функції printf()

Рядок форматів повинен містити по однієї специфікації виведення для кожної


змінної, яка виводиться. Специфікація повинна відповідати типу даних, котрий вказано в
оголошенні змінної (табл. 8.2).

Таблиця 8.2 – Специфікації виведення мови С


Специфікація Значення Тип змінної, яка
виводиться
%c Окремий символ сhar
%d або %i Десяткове ціле зі знаком int, short
%ld Десяткове довге ціле зі знаком long
%f Десяткове число з плаваючою комою float, double
%s Рядок символів массив типа char
%u Десяткове число без знаку unsigned int, unsigned short
%lu Десяткове довге ціле число без знаку unsigned long
%o Восьмирічне ціле число без знаку int
%x або %X Шістнадцятирічне ціле без знаку int
%p Покажчик *<тип даних>
%e Експоненціальне представлення (e) float
%E Експоненціальне представлення (Е) double float
%lc Двобайтовий символ wchar_t
%ls Рядок двобайтових символів масив типу wchar_t

Всі елементи рядка форматів, що не є керуючими послідовностями або


специфікаціями, сприймаються як текстові рядки. Вони відображаються так, як написані,
включаючи пробіли.
Для виведення декількох змінних, в рядок форматів включається декілька
специфікацій, котрі відповідають типу змінної. Наприклад:
printf(“Rate= %f, amount= %d”, rate, amount);
Аргументом функції printf() можуть бути вирази. Наприклад:
printf(“%d”, x+y); // total=x+y; printf(“%d” ,total);
Приклад. Програма виведення значень.
#include <stdio.h>
int a=2, b=10, c=50;
float f=1.05, g=25.5, h=-0.1;
int main()
{
printf(“\n Decimal values without tabs:_%d_%d_%d”,a,b,c);
printf(“\n Decimal values with tabs:\t_%d_\t%d_\t%d”,a,b,c);
printf(“\n Three floats on 1 line: \t%f_\t%f_\t%f”,f,g,h);
printf(“\n Three floats on 3 line: \n \t %f \n_\t %f \n_\t%f”,f,g,h);
printf(“\n The rate is %f%%”,f);
printf(“\n The result of %f \\ %f=%f \n”,g,f,g/f);
return 0;
3

8.3 Функція puts()

Функція puts() використовується для виведення текстових повідомлень на екран.


Вимагає підключення бібліотеки <stdio.h>. Після виведення автоматично здійснюється
перехід на новий рядок. Рядок, котрий буде виводитеся може мати керуючі символи.
Синтаксис функції puts():

#include <stdio.h>
puts(“<рядок>”);

Наприклад:
puts(“виведення результату лаб. р.”);

8.4 Введення даних за допомогою функції scanf()

Функція scanf() виконує введення значень відповідно до специфікації введення в


рядку формату та присвоює ці значення змінним-аргументам. Фактично аргументами
повинні бути адреса змінних, а не самі змінні. Вимагає підключення бібліотеки <stdio.h>.

Синтаксис:
#include <stdio.h>
scanf(“<рядок формату>”,<аргументи>,…);

Функція scanf() зчитує поле введення зі стандартного потоку введення, зазвичай з


клавіатури. Адреса числових змінних передаються в функцію за допомогою знаку операції
взяття адреси – &, який вказується перед ім’ям змінної. Кожне зчитане поле поміщується
у відповідну змінну, при цьому воно перетворюється до формату, який заданий
специфікаціями введення. Більшість специфікації введення, по своєму призначенню,
аналогічні специфікаціям виведення (див. табл. 8.2).
Елементи вхідного потоку повинні бути розділені пробілами, символами табуляції,
або новим рядком. Наприклад:
scanf(“%d%d”,&r,&c); // в вхідному потоці 10 20
Символ * після % прочитає дані заданого типу, але заборонить їх присвоєння
змінній. Наприклад:
scanf(“%d%*c%d”,&x,&y); // в вхідному потоці 10/20, результат введення x=10; y=20;
В рядку формату може вказуватися модифікатор максимальної довжини,
наприклад:
scanf(“%20s”,str); //функція прочитає в str не більше 20 символів.
При зчитуванні даних за специфікацією символьної змінної, такі символи як:
пробіл, табуляція, перехід на новий рядок – сприймаються як символи. Наприклад:
4

scanf(“%c%c%c”,&a, &b, &c); // у вхідному потоці: x y, значення:a=x; b=<пробіл>;


c=y;
Можливе застосування функції scanf() для зчитування набору символів. Для
визначення такого набору, символи, котрі підлягають скануванню, замикають в квадратні
дужки. Відповідна набору символів змінна повинна бути об’явлена покажчиком на масив
символів. Наприклад:
%[XYZ] // прочитати тільки вказані символи з вхідного потоку
%[A-Z] // завдання набору символів за допомогою дефісу.

Приклад. Програма виконує введення в першу строку тільки цифр.


#include <stdio.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL, "rus");
char s1[80], s2[80];
printf("Введіть числа, а потім декілька літер:\n");
scanf("%[0123456789]%s",s1,s2);
printf("%s \n %s",s1,s2);
return 0;
}

Приклад. Виведення числових значень у різних форматах.

#include <stdio.h>
#include <stdlib.h>

int main()
{ int a=31;
float b=512.713;
printf("\n \a %d %o %x", a, a, a);
printf("\n %f %e", b, b);
return 0;
}

You might also like