C++-strcpy_s的实现原理
众所周知strcpy_s是strcpy的安全版本,但是想不通其中实现原理,想请大牛指导一二。
strpy_s原型如下:
strcpy_s(_CHAR *_DEST, size_t _SIZE, const _CHAR *_SRC)
实例1:
char dest[5];
char* src = "abcdefg";
strcpy_s(dest,5,src);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
strcpy_s相对于strcpy来说,提供了一个手动输入大小的机制。strcpy遇到源字符串的空字符就停止拷贝,而strcpy_s则是遇到源字符串的空字符或者是长度达到限制时就停止拷贝。
strcpy_s的代码我想应该是类似下面这样的:
strcpy_s(_CHAR *_DEST, size_t _SIZE, const _CHAR *_SRC)
{
assert(NULL != _DEST && NULL != _SRC && _SIZE >= 0);
size_t szIdx = 0;
while ( szIdx != _SIZE && _SRC[szIdx] != '')
{
_DEST[szIdx] = _SRC[szIdx];
++szIdx;
}
}
它不会理会边界问题,因为你传入的_SIZE要负责任。