Как у нас есть безопасная версия для _stprintf
т.е. stprintf_s
для переполнения буфера hp fortify
предупреждение, так что мы можем использовать вместо wsprintf
()? Я старался wsprintf_s
, Это не работает.
И может кто-нибудь, пожалуйста, объясните разницу ч / б _stprintf
а также wsprintf
? Или мы можем использовать stprintf_s
в качестве безопасной версии для wsprintf
,
Опции описаны в разделе wsprintf:
Заметка Не использовать. Попробуйте вместо этого использовать одну из следующих функций: StringCbPrintf, StringCbPrintfEx, StringCchPrintf, или же StringCchPrintfEx. Смотрите соображения безопасности.
Если вы предпочитаете использовать безопасную функцию, которая больше напоминает wsprintf
, идти с swprintf_s или же _snwprintf_s.
_stprintf
является макросом препроцессора, который отображает вызов в версию ANSI или UNICODE. Таблица сопоставления документирована в sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l:
TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined
----------------+------------------------------+---------------+-----------------
_stprintf | sprintf | sprintf | _swprintf
Картографический стол для _stprintf_s:
TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined
----------------+------------------------------+---------------+-----------------
_stprintf_s | sprintf_s | sprintf_s | swprintf_s
Других решений пока нет …