Когда вы сталкиваетесь с кодом, который вы не понимаете и который вызывает функцию из библиотеки, ваш первый заказ - исследование документации для этой функции . Для стандартных функций языка C достаточно ввести название функции в Google.
Хорошая ссылка в этом случае - cppreference (не вводите в заблуждение название сайта, это ссылка на C, а не ссылка на C ++). Это дает определение функции как
int scanf( const char *format, ... );
Теперь ищите описание параметра format
:
указатель на символьную строку с нулевым символом в конце, указывающую, как читать ввод.
В последующем тексте объясняется, как читать строку формата. В частности:
- […] символ [кроме
%
] в строке формата потребляет ровно один идентичный символ из входного потока или вызывает сбой функции, если следующий символ в потоке не сравнивается равным.
- спецификации преобразования [в] следующем формате
- вводный символ%
- спецификатор формата преобразования
d
- соответствует десятичному целому числу .
Другими словами:
scanf
анализирует текстовый ввод на основе строки формата. Внутри строки формата /
буквально соответствует косой черте в пользовательском вводе. %d
соответствует десятичному целому числу.
Следовательно, scanf("%d/%d/%d", …)
будет соответствовать строке, состоящей из трех целых чисел, разделенных косой чертой, и сохранит числовые значения внутри переменных, на которые указывают.