Is strcpy equivalent to strcpy_s



我想知道我是否可以安全替换此处定义的strcpy_s https://msdn.microsoft.com/en-us/library/td1esda9.aspx-(一个带有两个参数的(在此处定义的strcpy http://en.cppreference.com/w/c/string/byte/strcpy-(第一个(。如果没有

C11标准添加了包括strcpy_s()在内的边界检查功能。因此,如果您担心可移植性,只要您拥有符合C11的编译器,就可以了。请注意,C11标准"约束处理程序"与Microsoft CRT的"无效参数处理程序"略有不同,因此,如果您要安装自定义处理程序,则可能需要一些调整。

对于完全替换它,不,您不能用strcpy()安全地替换它,原因很明显:strcpy()没有界限。您要么需要使用strlen()进行自己的界限检查,要么使用strncpy(),但请注意,strncpy()的行为不同(具体来说,如果源字符串太大而无法安装到目的地,则目的地缓冲区将会不要被终止(。

最新更新