就像我们有_stprintf
的安全版本一样,即hp fortify缓冲区溢出的stprintf_s
警告,那么我们可以用什么代替wsprintf
()?我尝试了wsprintf_s
,它不起作用。
谁能解释一下_stprintf
和wsprintf
的区别?或者我们可以使用stprintf_s
作为wsprintf
的安全版本。
最佳答案
这些选项记录在wsprintf下:
如果您想使用更类似于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