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()
для кількох слів.