Специфікатори формату в C
Специфікатор формату в C використовується, щоб повідомити компілятору про тип даних, які потрібно роздрукувати або відсканувати в операціях введення та виведення. Вони завжди починаються з a % і використовуються у форматованому рядку в таких функціях, як printf(), scanf, sprintf() тощо.
Мова C надає ряд специфікаторів формату, які пов’язані з різними типами даних, наприклад %d для int, %c для char тощо. У цій статті ми обговоримо деякі часто використовувані специфікатори формату та як їх використовувати.
Список специфікаторів формату в C
Наведена нижче таблиця містить найбільш часто використовувані специфікатори формату в C
| Специфікатор формату | опис |
|---|---|
| %c | Для типу персонажа. |
| %d | Для знакового цілого типу. |
| %e або %E | Для наукового позначення поплавців. |
| %f | Для поплавкового типу. |
| %g або %G | Для плаваючого типу з поточною точністю. |
| %i | Ціле число без знака |
| %ld або %li | Довго |
| %lf | Двомісний |
| %Lf | Довга подвійна |
| %lu | Unsigned int або unsigned long |
| %lli або %lld | Довгий довгий |
| %llu | Беззнаковий довгий довгий |
| %O | Вісімкове представлення |
| %p | покажчик |
| %s | Рядок |
| % дюймів | Unsigned int |
| %x або %X | Шістнадцяткове представлення |
| %n | Нічого не друкує |
| %% | Друкує символ % |
Приклади специфікаторів формату в C
1. Специфікатор формату символів – %c у C
%c є специфікатором формату для char тип даних мовою C. Його можна використовувати як для форматованого введення, так і для форматованого виведення мовою C.
Синтаксис:
scanf(' %d ...', ...); printf(' %d ...', ...); приклад:
C
// C Program to illustrate the %c format specifier.> #include> int> main()> {> > char> c;> > // using %c for character input> > scanf> (> 'Enter some character: %c'> , &c);> > // using %c for character output> > printf> (> 'The entered character: %c'> , &c);> > return> 0;> }> |
введення:
Enter some character: A
Вихід:
The entered character: A
2. Специфікатор цілочисельного формату (зі знаком) – %d у C
Ми можемо використовувати специфікатор формату цілого числа зі знаком %d у функціях scanf() і print() або інших функціях, які використовують форматований рядок для введення та виведення внутр тип даних.
Синтаксис:
scanf('%d...', ...); printf('%i...', ...); приклад:
C
// C Program to demonstrate the use of %d and %i> #include> // Driver code> int> main()> {> > int> x;> > // taking integer input> > scanf> (> 'Enter the two integers: %d'> , &x);> > // printing integer output> > printf> (> 'Printed using %%d: %d
'> , x);> > printf> (> 'Printed using %%i: %3i
'> , x);> > return> 0;> }> |
введення:
Enter the integer: 45
Вихід:
Printed using %d: 45 Printed using %i: 45
3. Специфікатор формату беззнакового цілого числа – %u на C
%u є специфікатором формату для беззнакового цілого типу даних. Якщо ми вказуємо від’ємне ціле число для %u, воно перетворює ціле число на його перше доповнення.
Синтаксис:
printf(' %u ...', ...); scanf(' %u ...', ...); приклад: Наступна програма на С демонструє, як використовувати %u на С.
C
// C Program to illustrate the how to use %u> #include> // driver code> int> main()> {> > unsigned> int> var;> > scanf> (> 'Enter an integer: %u'> , &var);> > printf> (> 'Entered Unsigned Integer: %u'> , var);> > // trying to print negative value using %u> > printf> (> 'Printing -10 using %%u: %u
'> , -10);> > return> 0;> }> |
введення:
Enter an integer: 25
Вихід:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286
4. Специфікатор формату з плаваючою комою – %f у C
The %f це специфікатор формату з плаваючою комою мовою C, який можна використовувати всередині відформатованого рядка для введення та виведення плавати тип даних. Окрім %f, ми можемо використовувати %Це є або %І специфікатори формату для друку значення з плаваючою комою в експоненціальній формі.
Синтаксис:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...); приклад:
C
// C program to demonstrate the use of %f, %e and %E> #include> // driver code> int> main()> {> > float> a = 12.67;> > printf> (> 'Using %%f: %f
'> , a);> > printf> (> 'Using %%e: %e
'> , a);> > printf> (> 'Using %%E, %E'> , a);> > return> 0;> }> |
Вихід
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01
5. Вісімкове число без знака для цілого числа – %o в C
Ми можемо використати специфікатор формату %o у програмі на C, щоб надрукувати або отримати вхідні дані для вісімкового цілого числа без знаку.
Синтаксис:
printf(' %o ...', ...); scanf(' %o ...', ...); приклад:
C
#include> int> main()> {> > int> a = 67;> > printf> (> '%o
'> , a);> > return> 0;> }> |
Вихід
103
6. Беззнаковий шістнадцятковий для цілого числа – %x у C
Специфікатор формату %x використовується у відформатованому рядку для шістнадцяткових цілих чисел. У цьому випадку алфавіти в шістнадцяткових числах будуть написані малими літерами. Для цифр алфавіту у верхньому регістрі ми використовуємо %X.
Синтаксис:
printf(' %x ...', ...); scanf(' %X ...', ...); приклад:
C
// C Program to demonstrate the use of %x and %X> #include> int> main()> {> > int> a = 15454;> > printf> (> '%x
'> , a);> > printf> (> '%X'> , a);> > return> 0;> }> |
Вихід
3c5e 3C5E
7. Специфікатор формату рядка – %s у C
%s у C використовується для друку рядків або прийому рядків як вхідних даних.
Синтаксис:
printf(' %s ...', ...); scanf(' %s ...', ...); приклад:
C
// C program to illustrate the use of %s in C> #include> int> main()> {> > char> a[] => 'Hi Geeks'> ;> > printf> (> '%s
'> , a);> > return> 0;> }> |
Вихід
Hi Geeks
приклад: Робота %s із scanf() дещо відрізняється від роботи з printf(). Давайте розберемося в цьому за допомогою наступної програми на C.
C
// C Program to illustrate the working of %s with scanf()> #include> int> main()> {> > char> str[50];> > // taking string as input> > scanf> (> 'Enter the String: %s'> , str);> > printf> (> 'Entered String: %s'> , str);> > return> 0;> }> |
Введення
Enter the string: Hi Geeks
Вихід
Hi
Як ми бачимо, рядок сканується лише до тих пір, поки не буде виявлено пробіл. Ми можемо уникнути цього, використовуючи набори сканів у C .
8. Специфікатор формату адреси – %p у C
Мова C також надає специфікатор формату для друку адреси/вказівників. Ми можемо використовувати %p для друку адрес і покажчиків на C
Синтаксис
printf(' %p ...', ...); приклад:
C
#include> int> main()> {> > int> a = 10;> > printf> (> 'The Memory Address of a: %p
'> ,(> void> *)&a);> > return> 0;> }> |
Вихід
The Memory Address of a: 0x7ffe9645b3fc
Форматування введення та виведення
Мова C надає деякі інструменти, за допомогою яких ми можемо форматувати вхідні та вихідні дані. Зазвичай вони вставляються між знаком % і символом специфікатора формату. Деякі з них такі:
- Знак мінус (-) означає вирівнювання за лівим краєм.
- Число після % вказує мінімальну ширину поля для друку, якщо розмір символів менший за ширину простору, що залишився, заповненого пробілом, а якщо він більший, тоді воно друкується як є без скорочення.
- Символ крапки ( . ) поділяє ширину поля з точністю.
Точність визначає мінімальну кількість цифр у цілому числі, максимальну кількість символів у рядку та кількість цифр після десяткової частини у плаваючому значенні.
Приклад форматування введення/виведення
C
// C Program to demonstrate the formatting methods.> #include> int> main()> {> > char> str[] => 'geeksforgeeks'> ;> > printf> (> '%20s
'> , str);> > printf> (> '%-20s
'> , str);> > printf> (> '%20.5s
'> , str);> > printf> (> '%-20.5s
'> , str);> > return> 0;> }> |
Вихід
geeksforgeeks geeksforgeeks geeks geeks
Поширені запитання щодо специфікаторів формату C
1. Чи є в С специфікатор формату для двійкових чисел?
Ні, мова C не надає специфікатора формату для двійкових чисел.
2. Що таке відформатований рядок?
Функції введення та виведення в C приймають рядок як аргумент, який визначає, як дані відображаються на екрані або дані витягуються в пам’ять. Цей рядок називається відформатованим рядком.