C++-strcpy_s的实现原理

发布于 2016-11-13 17:49:37 字数 265 浏览 1485 评论 1

众所周知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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-05-19 08:30:23

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要负责任。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文