C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

С функція printf


Консольний вивід. функція printf

Для виведення на консоль в мові програмування Сі часто застосовується функція printf() . Але якщо з виводом простого рядка особливих проблем не виникає, то при виведенні даних інших типів є свої особливості.

Формальне визначення функції printf виглядає наступним чином:

printf(строка_форматування, список_аргументів)

Перший параметр представляє рядок, який може містити довільний текст в подвійних лапках. наприклад:

#include <stdio.h>
int main(void)
{
    printf("Hello world!");
    return 0;
}

Крім стандартного тексту ми можемо передавати в рядок спеціальні групи символів, які називаються керуючими послідовностями. Найбільш поширені з них:

\n перенесення на новий рядок
\t табуляція
\r повернення каретки (курсора) в початок рядка
\\ зворотний слеш
\' одинарні лапки
\" подвійні лапки

наприклад:

#include <stdio.h>
int main(void)
{
    printf("The book \"The C Programming Language\"\nBrian Kernighan, Dennis Ritchie");
    return 0;
}
// RESULT:
/* The book "The C Programming Language"
   Brian Kernighan, Dennis Ritchie
*/

специфікації перетворення

Специфікації перетворення дозволяють задати формат виведення різних типів даних.

Формальне визначення специфікацій перетворення виглядає наступним чином:

% прапор ширина_поля.точність модифікатор специфікатор

З цих компонентів обов'язковими є тільки два % і специфікатор .

Специфікатори які ми можемо використовувати:

Формат Пояснення
%c виведення окремих символів (тип char)
%s для виведення рядків (тип string)
%d для виведення цілих чисел зі знаком (тип int)
%i для виведення цілих чисел зі знаком (тип int)
%u для виведення цілих додатніх чисел (тип unsigned)
%f для виведення чисел з плаваючим знаком (float, double)
%F для виведення чисел з плаваючим знаком в верхньому регістрі (float, double)
%e для виведення експоненціального представлення чисел з плаваючим знаком (float, double)
%E для виведення експоненціального представлення чисел з плаваючим знаком в верхньому регістрі (float, double)
%g для виведення чисел використовується більш короткий з форматів %e або %f
%G для виведення чисел використовується більш короткий з форматі в %E або %F
%o для виведення 8 бітних чисел без знака
%x для виведення шістнадцяткових чисел
%X для виведення шістнадцяткових чисел в верхньому регістрі
%% для виведення знака відсотка

Застосуємо кілька специфікаторів:

#include <stdio.h>
int main(void)
{
    float r = 71.8986;
    printf("x = %f \n", r);
    printf("x = %e \n", r);
     
    char symbol = 'r';
    printf("symbol = %c \n", symbol);  // підкладаємо значення зі змінної symbol в %c
     
    unsigned int number = 23;
    printf("number = %u \n", number);   // підкладаємо значення зі змінної number в %u
     
    printf("%s \n", "Hello Word 2019");  // підкладаємо значення "Hello Word 2019" в %s
    return 0;
}

Значення для специфікаторів передаються через аргумент, який йде другим параметром в функції printf .

Для виведення числових значень з плаваючим знаком ми можемо використовувати ширину поля і точність. Ширина поля представляє ціле додатнє число, яке визначає довжину виведеного значення в символах. Точність - це також ціле додатнє число, яке визначає кількість цифр у дробовій частині. наприклад:

float r = 71.8986;
printf("x = %4.2f \n", r);  // 71.90

Тут специфікація перетворення представляє рядок " %4.2f ", де

" 4 " - ширина поля (для виведення числа будуть використовуватися 4 цифри), а

" 2 " - точність (2 цифри в дробової частини).

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

h для виведення значень short int
l для виведення значень long int
L для виведення значень long double
short r = 7100;
printf("x = %hd", r);   // 7100

Необов'язково передавати по одному значенню для виведення в функцію printf . Ми можемо передавати безліч значень:

printf("Name=%s \t Age=%d \t Weight=%3.2f", "Tom", 23, 63.3456);

Перший специфікатор в рядку форматування - " %s ", і для нього значення буде підставлятися першим аргументом - рядком "Tom". Другий специфікатор - " %d ", для нього значення береться з другого аргументу - число 23 . І так далі.

Додатково можна використовувати прапори, які додатково дозволяють управляти форматуванням виведення:

+ Якщо виведене значення має знак (+ або -), то воно виводиться. Без цього прапора знак виводиться тільки в разі відємного значення.
пробіл вставляє пропуск на місці знака перед додатніми числами
# При використанні зі специфікаторами "o", "x", "X" значення числа виводиться з попередніми символами 0 , 0x або 0X . При використанні зі специфікаторами "f", "g", "G" десяткова крапка буде виводитися, навіть якщо в числі немає дробової частини

Приклад використання прапорів:

#include <stdio.h>
 
int main(void)
{
    printf("%d \n", 8);
    printf("% d \n", 8);
    printf("%+d \n", +8);
    printf("%#o \n", 8);
    printf("%#f \n", 8.);
    return 0;
}

// RESULT:
/* 
8
 8
+8
010
8.000000
*/

Наш партнер:
beta test mp3 playlist downloader