社区
C++ 语言
帖子详情
strcpy,strcpy_s,strncpy,strncpy_s的区别
愤怒的泡面
2011-05-15 08:24:02
请问下这个几个函数的区别,另外n和_s的含义(safe)?
...全文
415
5
打赏
收藏
strcpy,strcpy_s,strncpy,strncpy_s的区别
请问下这个几个函数的区别,另外n和_s的含义(safe)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
秃头披风侠
2011-05-15
打赏
举报
回复
后者比前者更安全
yfk
2011-05-15
打赏
举报
回复
首先说下strcpy
strcpy()是依据源串的\0作为结束判断的,不检查copy先的Buffer的Size,如果目标空间不够,就有BufferOverflow问题。
strncpy的原型为:
char * strncpy(char *dest, char *src, size_t n);
其将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针,所以,用户定义好size,就没有bufferoverfolow的风险
目前,
strncpy是字符串拷贝推荐的用法
加_s版本则是从VS2005开始推出的安全版本,而加_s版本之所以安全,是因为他们在接口增加了一个参数numElems来表明dest中的字节数,防止目标指针dest中的空间不够而导致出现Bug,同时返回值改成返回错误代码,而不是为了一些所谓的方便而返回char*。这样接口的定义就比原来安全很多。
但是,_s版本并不是标准库,所以,不推荐使用
winginsky
2011-05-15
打赏
举报
回复
n表示数量,s表示安全版本
碎炎
2011-05-15
打赏
举报
回复
百度搜一下即可 百科里有完整介绍
安全函数
strcpy
_s、
strncpy
_s、snprintf_s、memcpy_s
用于了解安全函数
strcpy
_s、
strncpy
_s、snprintf_s、memcpy_s
25_
strcpy
_
strncpy
_memcpy的
区别
1
1. 复制的内容不同 2. 复制的法不同 3. 途不同 1. dest指向的空间要够拷 3. 使
strncpy
时,确保dest的最后个字符是“\0”
strcpy
和
strncpy
区别
C语言字符串复制库函数
strcpy
和
strncpy
区别
C++
strcpy
_s()用法详解[源码]
本文详细介绍了C++中
strcpy
_s()函数的用法,这是一个安全版本的字符串拷贝函数,属于C11和C++11标准库的一部分。
strcpy
_s()通过增加目标缓冲区大小的参数,有效避免了缓冲区溢出的问题。文章提供了函数的原型、参数说明、返回值以及示例代码,帮助读者理解如何使用该函数进行安全的字符串拷贝。此外,还强调了使用时的注意事项,如确保目标缓冲区足够大、自动添加终止字符等,并对比了
strcpy
_s()与
strcpy
()、
strncpy
()的
区别
。最后,作者通过实际案例说明了该函数在编程中的应用价值,建议读者在需要安全字符串拷贝时优先考虑使用
strcpy
_s()。
13_
strcpy
_越界问题举例1
13_
strcpy
_越界问题举例1
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章