我一直在使用此页面中的 md5 实现:
http://www.zedwood.com/article/121/cpp-md5-function
因为它工作正常。但是有这个功能:
// return hex representation of digest as string
std::string MD5::hexdigest() const
{
if (!finalized)
return "";
char buf[33];
for (int i=0; i<16; i++)
sprintf(buf+i*2, "%02x", digest[i]);
buf[32]=0;
return std::string(buf);
}
如果我将 sprintf 更改为安全版本 (sprintf_s),则会在运行时收到访问冲突错误。我唯一改变的是 sprintf 行,如下所示:
sprintf_s(buf+i*2, 33, "%02x", digest[i]);
它编译得很好,但后来我得到了错误。知道为什么吗?