Я работаю над устаревшим кодом для платформы Windows
. Когда я компилирую код в VS2013
, он дает следующее предупреждение:
"ошибка C4996: 'fopen
': эта функция или переменная может быть небезопасной. Вместо этого используйте fopen_s
. Для отключения устаревания используйте _CRT_SECURE_NO_WARNINGS. Подробнее см. интерактивную справку."
И это также даст овальное предупреждение для sprintf
. Я понимаю, что sprintf_s
более безопасен, чем sprintf из-за переполнения буфера.
Но как можно fopen_s быть более безопасным, чем fopen
, нет возможности переполнения буфера, потому что fopen
не принимает буфер. Может ли кто-либо предоставить случай fopen
небезопасно, а fopen_s
безопасен?