0Pricing
C Academy · Урок

scanf и ввод

Читайте пользовательский ввод

«scanf и ввод» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.

Что делает scanf

scanf считывает форматированный ввод, набранный пользователем. Он использует те же спецификаторы, что и printf.

#include <stdio.h>
int main(void) {
    int x = 0;
    /* scanf("%d", &x); */
    x = 5;
    printf("x = %d\n", x);
    return 0;
}

Оператор получения адреса

scanf нужен адрес переменной, чтобы сохранить в ней значение. Поэтому записывают &x.

#include <stdio.h>
int main(void) {
    int x = 42;
    int *p = &x;
    printf("value via address = %d\n", *p);
    return 0;
}

Считывание целого числа

Чтобы считать целое число, передайте %d и адрес переменной типа int.

#include <stdio.h>
int main(void) {
    int n;
    /* scanf("%d", &n); */
    n = 7;
    printf("You entered %d\n", n);
    return 0;
}

Считывание числа с плавающей точкой

Для чтения значения типа float используйте %f, а для значения типа double — %lf.

#include <stdio.h>
int main(void) {
    double d;
    /* scanf("%lf", &d); */
    d = 3.14;
    printf("d = %.2f\n", d);
    return 0;
}

Считывание нескольких значений

Один вызов scanf может считать несколько значений, разделённых пробельными символами.

#include <stdio.h>
int main(void) {
    int a, b;
    /* scanf("%d %d", &a, &b); */
    a = 3; b = 4;
    printf("sum = %d\n", a + b);
    return 0;
}

Считывание символа

Используйте %c, чтобы считать один символ. Будьте внимательны: этот спецификатор также считывает пробелы и переводы строк.

#include <stdio.h>
int main(void) {
    char c;
    /* scanf(" %c", &c); */
    c = 'X';
    printf("char = %c\n", c);
    return 0;
}

Считывание слова

%s считывает слово до пробельного символа в массив символов. & не нужен, поскольку имя массива уже является адресом.

#include <stdio.h>
int main(void) {
    char word[20];
    /* scanf("%s", word); */
    word[0] = 'H'; word[1] = 'i'; word[2] = 0;
    printf("word = %s\n", word);
    return 0;
}

Возвращаемое значение scanf

scanf возвращает количество успешно считанных элементов. Проверяйте это значение, чтобы обнаруживать некорректный ввод.

#include <stdio.h>
int main(void) {
    int n = 5;
    int read = 1; /* pretend scanf returned 1 */
    if (read == 1)
        printf("got %d\n", n);
    return 0;
}

Пропуск начальных пробелов

Числовые спецификаторы автоматически пропускают начальные пробельные символы, а %c — нет. Пробел перед %c исправляет это.

#include <stdio.h>
int main(void) {
    char c = 'Y';
    printf("Reading with \" %%c\" skips spaces\n");
    printf("c = %c\n", c);
    return 0;
}

Проверка ввода

Всегда проверяйте возвращаемое значение, прежде чем доверять данным.

#include <stdio.h>
int main(void) {
    int value = 10;
    int ok = 1;
    if (ok)
        printf("valid: %d\n", value);
    else
        printf("invalid input\n");
    return 0;
}

Собираем всё вместе

Обычно программа запрашивает значение, считывает его, а затем использует.

#include <stdio.h>
int main(void) {
    int age;
    printf("Enter age: ");
    /* scanf("%d", &age); */
    age = 20;
    printf("Next year you will be %d\n", age + 1);
    return 0;
}

Быстрая проверка

Проверьте своё понимание scanf.

Итоги: scanf и ввод

Вы научились считывать пользовательский ввод.

  • scanf использует спецификаторы в стиле printf
  • Передавайте &var, чтобы указать, где хранить значение
  • Используйте %lf для double и %s для слов
  • Проверяйте возвращаемое значение, чтобы проверять ввод
  • Ставьте пробел перед %c, чтобы пропустить пробельные символы

Часто задаваемые вопросы

Урок «scanf и ввод» бесплатный?

Да — полный текст урока «scanf и ввод» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.

Чему я научусь в уроке «scanf и ввод»?

Читайте пользовательский ввод Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «scanf и ввод»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Спецификаторы формата printf
  2. scanf и ввод
  3. Ширина, точность и флаги
  4. Распространённые ошибки ввода-вывода
← Назад к C Academy