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

Вчимося отримувати дані від користувача для подальшої обробки

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

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

printf("Введіть ціле число: \n");    // пропонуємо користувачу ввести число
int num;                             // створимо змінну, в яку запишемо введене число
scanf("%d", &num);                   // команда очікує вводу користувача, і записує введене число в змінну
printf("Ви ввели число %d", num);

Скомпілюємо і запустимо код. Результат має бути приблизно таким:

Простий приклад використання функції scanf

Зверніть увагу! Якщо ви використовуєте Visual Studio, то можете побачити попередження про те, що scanf() є небезпечною функцією. Це пов'язано з тим, що Microsoft рекомендує використовувати власну функцію scanf_s(). Вона не входить до стандарту C і підтримується переважно компілятором Microsoft. Якщо ви вивчаєте стандартну мову C або плануєте використовувати інші компілятори (GCC, Clang тощо), сміливо використовуйте scanf(). Для того щоб заставити компілятор працювати зі scanf, на початку файлу з кодом пропишіть рядок: "#pragma warning(disable : 4996)", як видно на скріншоті вище.

Функція scanf() приймає два основні аргументи. Перший аргумент — це специфікатор формату (наприклад, %d), який повідомляє функції, який тип даних потрібно зчитати. Другий аргумент — це адреса змінної (наприклад, &myNum), у яку буде записано введене користувачем значення. Для отримання адреси змінної використовується оператор взяття адреси &.

Порада: Поки що достатньо запам'ятати, що перед назвою змінної в scanf() потрібно ставити символ &. Детальніше про адреси пам'яті, принцип їх роботи та функції ви дізнаєтеся в наступних розділах.

Кілька введених значень

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

// Створюємо змінні типу int і char
int myNum;
char myChar;

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

// Зчитуємо число та символ, які ввів користувач
scanf("%d %c", &myNum, &myChar);

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

// Виводимо символ (тільки латиниця)
printf("Ваш символ: %c\n", myChar);

У цьому випадку scanf() використовує кілька специфікаторів формату (%d %c). Це означає, що вона очікує одразу два значення: спочатку ціле число, а потім один символ. Вони вводяться в одному рядку через пробіл або інший розділювач, який сприймається як роздільник введення.

Таким чином, одна команда scanf() може обробляти одразу декілька значень, що зручно для простих сценаріїв введення даних.


Ця стаття з циклу статей Уроки програмування на мові C.

Перед переходом до наступного уроку рекомендуємо виконати просту практичну роботу: Калькулятор витрат на автомобільну поїздку

Наступний урок в процесі написання...