НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Мова програмування C. Уроки W3Schools для початківців українською мовою

En Es De

C Введення користувача


Введення користувача

Ви вже дізналися, що printf() використовується для виведення значень у мові C.

Щоб отримати користувацькі дані, ви можете скористатися функцією scanf():

Приклад

Виведіть число, введене користувачем:

// Створіть цілочисельну змінну, яка зберігатиме число, яке ми отримуємо від користувача
int myNum;

// Попросіть користувача ввести число
printf("Type a number: \n");

// Отримайте та збережіть кількість користувацьких типів
scanf("%d", &myNum);

// Виведіть число, яке ввів користувач
printf("Ваше число: %d", myNum);
Спробуйте самі »

Функція scanf() приймає два аргументи: специфікатор формату змінної (%d у прикладі вище) і оператор посилання (&myNum), який зберігає адресу пам’яті змінної.

Порада: ви дізнаєтесь більше про адреси пам’яті та функції в наступних розділах.


Кілька введень

Функція scanf() також дозволяє кілька вхідних даних (ціле число та символ у наступному прикладі):

Приклад

// Створіть змінну int та char
int myNum;
char myChar;

// Попросіть користувача ввести число ТА символ
printf("Введіть число ТА символ і натисніть enter: \n");

// Отримайте та збережіть число ТА символ користувальницьких типів
scanf("%d %c", &myNum, &myChar);

// Надрукувати число
printf("Ваше число: %d\n", myNum);

// Надрукувати символ
printf("Ваш символ: %c\n", myChar);
Спробуйте самі »

Використовуйте рядкове введення

Ви також можете отримати рядок, введений користувачем:

Приклад

Вивести ім’я користувача:

// Створіть рядок
char firstName[30];

// Попросіть користувача ввести текст
printf("Введіть своє ім’я: \n");

// Отримайте та збережіть текст
scanf("%s", firstName);

// Виведіть текст
printf("Hello %s", firstName);
Спробуйте самі »

Примітка: Працюючи з рядками в scanf(), ви повинні вказати розмір рядка/масиву (ми використали дуже велике число, 30 у нашому прикладі, але принаймні тоді ми впевнені, що він зберігатиме достатньо символів для імені), і вам не потрібно використовувати оператор посилання (&).

Проте функція scanf() має певні обмеження: вона розглядає пробіли (пробіли, табуляції тощо) як завершальний символ, що означає, що вона може відображати лише одне слово (навіть якщо ви вводите багато слів). Наприклад:

Приклад

char fullName[30];

printf("Введіть своє повне ім’я: \n");
scanf("%s", &fullName);

printf("Hello %s", fullName);

// Введіть своє повне ім’я: John Doe
// Hello John

З наведеного вище прикладу можна очікувати, що програма надрукує "John Doe", але вона надрукує лише "John".

Ось чому; під час роботи з рядками ми часто використовуємо функцію fgets(), щоб читати рядок тексту. Зауважте, що ви повинні включити такі аргументи: ім’я рядкової змінної, sizeof(string_name) та stdin:

Приклад

char fullName[30];

printf("Введіть своє повне ім’я: \n");
fgets(fullName, sizeof(fullName), stdin);

printf("Hello %s", fullName);

// Введіть своє повне ім’я: John Doe
// Hello John Doe
Спробуйте самі »

Використовуйте функцію scanf(), щоб отримати одне слово як вхідні дані, і використовуйте fgets() для кількох слів.