我无法弄清楚以下两个实现之间究竟有什么区别:
char str[20] = "Hello World";
_strnset(str, '*', 5);
和
char str[20] = "Hello World";
memset(str, '*', 5);
他们都产生以下结果:
输出:*****世界!
他们之间有偏好吗?
答案 0 :(得分:11)
_strnset
知道它正在使用字符串,因此会尊重null终止符。 memset
没有,所以不会。
至于偏好,
memset
符合C和C ++标准,_strnset
两者都没有。_strnset
可以在您编写有缺陷的代码时避免缓冲区溢出。如果您知道自己将继续使用Windows,请使用_strnset
。其他memset
。