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 — локальная установка не требуется.
Все уроки этого курса
- Спецификаторы формата printf
- scanf и ввод
- Ширина, точность и флаги
- Распространённые ошибки ввода-вывода