Странное поведение функции sscanf_s ! - C++ - Ответ 17277753

А почему вас это удивляет? Как он может это не пропустить? С формальной точки зрения компилятор тут вообще ни при чем. Компилятор видит какую-то функцию с variadic аргументами, о которых он ничего не знает. Он не знает ничего о форматной строке функции

scanf

. Он не знает, как правильно и как неправильно. Он не может (и не имеет права!) тут что-то "не пропускать". Ошибку в этом можете увидеть только вы.

Однако на практике, из-за распространенности таких ошибок, компиляторы научили в простейших случаях предпринимать дополнительные усилия по отслеживанию типов аргументов в некотором наборе стандартных функций, вроде

printf

и

scanf

. Однако такую проверку нужно запрашивать отдельно. В GCC, например, это

-Wformat

.

Ваш код с

-Wformat

будет отловлен компилятором.

На практике оно будет "работать". Почему оно "работает" уже разбиралось:

Распространенные ошибки

Вернуться к обсуждению:

Странное поведение функции sscanf_s ! C++