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
.
我无法弄清楚以下两个实现之间到底有什么区别:
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
.