首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是与strcpy_s等价的strcpy

是与strcpy_s等价的strcpy
EN

Stack Overflow用户
提问于 2017-06-26 19:03:48
回答 1查看 1.5K关注 0票数 1

我想知道我是否能够安全地将这里定义的strcpy_s替换为https://msdn.microsoft.com/en-us/library/td1esda9.aspx (有两个参数的一个),在这里定义了http://en.cppreference.com/w/c/string/byte/strcpy -(第一个)。如果不是,那么我可以使用的最接近的strcpy版本来替换strcpy_s吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-26 19:22:01

C11标准增加了包括strcpy_s()在内的边界检查函数。因此,如果您担心可移植性,只要您有一个与C11兼容的编译器,就可以了。请注意,C11标准的“约束处理程序”与Microsoft CRT的“无效参数处理程序”略有不同,因此如果您正在安装自定义处理程序,它可能需要进行一些调整。

至于完全替换它,不行,您不能安全地用strcpy()替换它,原因应该很明显:strcpy()是无边界检查的。您需要使用strlen()进行自己的边界检查,或者使用strncpy(),但请注意的行为不同(特别是,如果源字符串太大,无法在目标中匹配,目标缓冲区将不会以空结尾)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44766913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档