就像我们有_stprintf的安全版本一样,即hp fortify缓冲区溢出的stprintf_s警告,那么我们可以用什么代替wsprintf()?我尝试了wsprintf_s,它不起作用。

谁能解释一下_stprintfwsprintf的区别?或者我们可以使用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

10-08 05:10