memset 和 _strnset 之间的区别

Difference between memset and _strnset

我无法弄清楚以下两个实现之间到底有什么区别:

char str[20] = "Hello World";
_strnset(str, '*', 5); 

char str[20] = "Hello World";
memset(str, '*', 5);

它们都产生了以下结果:

输出:*****世界!

他们之间有偏好吗?

_strnset 知道它正在处理字符串,因此会尊重空终止符。 memset没有,所以不会。

至于偏好,

  • memset 在 C 和 C++ 标准中都有,_strnset 两者都不在。
  • 如果可用,_strnset 可以在您编写错误代码时避免缓冲区溢出。

如果您知道自己会留在 Windows,请使用 _strnset。否则 memset.