- •Елементи мови с.Основні символи
- •Ключові слова
- •Ідентифікатори
- •Константи
- •Лексеми
- •Коментарі
- •Умовні оператори. Логічні вирази
- •Форми оператора if
- •Оператор вибору switch
- •Перерахування типів
- •Перетворення типів
- •Оператори циклу
- •Оператор while
- •Оператор for
- •Оператор do-while
- •Оператори переходу
- •Cтруктури
- •Об'єднання (суміші)
- •Робота з структурами.
- •Ініціалізація структур
- •Робота з обєднаннями
- •Визначення об'єктів та типів
- •Методи доступу до елементів масивів
- •Покажчики на багатовимірні масиви
- •Операції з вказівниками
- •Робота з покажчиками.
- •Покажчики на структуру
- •Масиви структур
- •Динамічне розміщення масивів
- •Робота з динамічними масивами
- •Робота з непрямою адресацією
- •Робота з покажчиками як параметрами функцій
- •Використання вказівників
- •Операції з вказівниками
- •Використання вказівників в програмі
- •Робота з файлами
- •Відкриття файлу
- •Обробка відкритого файлу
- •Перевірка ознаки кінця файлу
- •Закриття файлу
- •Функції введення-виведення
- •Робота з текстовими файлами
- •Функція форматованого виведення printf ()
- •Основні формати
- •Модифікації форматів
- •Функція форматованого введення scanf ()
- •Робота функції scanf ()
- •Призначеня функцій бібліотеки введення-виведення
- •Макрокоманди
- •Потокові інтерфейси введення-виведення
- •Ближні покажчики (near)
- •Дальні покажчики (far)
- •Покажчики huge
- •Функції для роботи з рядками
- •Динамічні рядки, клас string
- •Визначення поточної робочої директорії
- •Визначення поточного каталогу диска
- •Визначення / встановленн поточного диска
- •Пошук файлу
- •Створення, видалення, зміна директорій
- •Приклад програми для роботи з директоріями
- •Перегляд каталогу диска
- •Параметри структури ffblk
- •Робота з клавіатурою
- •Робота з файлами
- •Послідовний доступ до елементів двійкових файлів
- •Організація довільного доступу до елементів двійкових файлів
- •Робота динамічних структур даних.
- •Функції управління пам'яттю
- •Атрибути файлів.
- •Параметри
- •Динамічні структури даніх
- •Лінійні списки
- •Стек. Загальні поняття.
- •Приклад використання стеку
- •Основні визначення
- •Приклад використання дерев
Функція форматованого виведення printf ()
Структура (синтаксис) звернення до функції:
printf ("рядок формату", арг1, арг2, ..., аргN);
В якості аргументів функції арг1 ... аргN використовуються ідентифікатори змінних або вирази. Список аргументів може бути порожнім.
Рядок формату записується в подвійних лапках і може містити:
будь-який текст;
специфікатори форматів (за кількістю аргументів), позначаються символом%, містять інформацію про тип виведеного значення і його модифікації;
керуючі символи.
Нагадаємо, що керуючий символ, або ESC-послідовність, формується з символу зворотної похилої риси \, званого в мові C escape-символом, і латинської літери. Приклади керуючих послідовностей наведені в п. 1.3.1.
Основні формати
Кожному аргументу повинен відповідати тільки один специфікатор формату. Вид формату визначається типом аргументу.
Цілі числа:
% D - аргумент розглядається як ціле 10-тичного число зі знаком;
% U - ціле 10-тично без знака;
% X - 16-річної ціле без знаку;
% O - 8-річно ціле без знаку.
Речові числа:
% F - аргумент записується у формі дійсного числа з фіксованою крапкою (наприклад, 0.036);
% E - аргумент записується у формі числа з плаваючою точкою.
Символи і рядки:
% C - аргумент розглядається як значення типу char, і на екран виводиться один символ;
% S - аргумент розглядається як рядок.
Повернемося до програми "двічі два" і додамо в неї вивід результату на екран:
# Include <stdio.h>
int main (void)
{
float x = 2., y;
y = x * x;
printf ("\ n y (% f) =% f", x, y);
return 0;}
Керуюча рядок містить ESC-символ перекладу рядка '\ n', текст і два специфікатора формату (% f): перший для аргументу x, другий - для аргументу y.
Виклик функції printf () можна записати і в іншому вигляді, включивши в неї обчислення виразу:
# Include <stdio.h>
int main (void)
{
float x2.;
printf ("\ n y (% f) =% f", x, x * x);
return 0;}
В результаті на екрані: y (2.000000) = 4.000000.
Модифікації форматів
Специфікатори формату цілих чисел можна записати у вигляді:
% Nd,% Nu,% No,% Nx,
де N - натуральне число, що визначає кількість позицій, що відводяться під значення числа (ширина поля виведення).
Для форматів дійсних чисел специфікатор формату представляється у вигляді:
% N.Mf або% N.Me,
де N і M - натуральні числа, що визначають загальне число позицій, відведених під число, N (ширина поля виведення) і число знаків у дробовій частині M (точність відображення).
Модифікуємо формати в нашому прикладі:
# Include <stdio.h>
int main (void)
{
float x = 2.;
printf ("\ n y (% 4.1f) =% 6.2f", x, x * x);
return 0;
}
Результат на екрані: y (2.0) = 4.00.
Зауважимо, що відповідно до використовуваних форматами для значення змінної x відведено 4, а для y - 6 позицій. Це знаходить своє відображення і на екрані, тобто після відкриваючої круглої дужки присутній один пробіл (саме значення x займає 3 позиції), а після знаку рівності - 2 пробілу (y займає 4 позиції).
При неправильно заданому форматі, коли ширина поля виведення виявляється менше, ніж необхідно для представлення значення змінної, компілятор мови додає відсутні позиції, виправляючи помилку програміста.
Аналогічно можна форматувати висновок символьних рядків:% N.Ms, тут в специфікатор перетворення N - ширина поля виведення рядка, M - максимальна кількість виведених на екран символів.
Наприклад, при виконанні оператора
printf ("% 4s% 3d% 7.3s \ n", "Вартість", 1400, "рублів");
на екрані буде виведена наступна інформація:
Вартість (1 пробіл) 1400 (5 пробілів) руб
Питання для контролю:
1. Що робить команда printf()?
2. Що може містити рядок функції printf(), що знаходиться в лапках?
3. Які основні формати для функції printf()?
4. Які є модифікації форматів?
Література:
1. Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 302-305
Урок №45
(згідно робочої навчальної програми)
Тема:Функція scanf() і родинні з нею функції
Питання:
1.Функція форматованого введення scanf ()
2. Робота функції scanf ()
