关于strcat_s函数

请教下,该函数参数2的具体意义假如:charcsName[20];strcpy_s(csName,20,_T("123"));则:一、strcat_s(csName,20... 请教下,该函数参数2的具体意义
假如:
char csName[20];
strcpy_s(csName, 20, _T("123"));
则:
一、
strcat_s(csName,20,_T("456"));
二、
strcat_s(csName,20-3,_T("456"));
请教下,一和二那种写法是对的
展开
 我来答
百度网友655cda33c
推荐于2017-11-24 · TA获得超过135个赞
知道答主
回答量:56
采纳率:0%
帮助的人:80.4万
展开全部
您好!

在VS2005之后,为了防止数据溢出问题,特意引进了所谓的安全函数strxxx_s系列。

其中 strcat_s(str1, num, str2); 第二个参数是指定str1长度。

ep : strcat_s(str,sizeof(str),"456");

另外不建议使用strcpy_s函数初始化一个char*,会引起不必要的麻烦。
可以直接 char csName[20] = "123";

希望能帮助到您。
追问
哦,这样啊,能简单说一下strcpy_s初始化会出现什么麻烦吗
追答
又想了一下,应该是我多虑了,之前用strcat的时候,经常过出现地址越界的问题。

原因一般是声明变量时没有声明长度,然后初始化的值不一定都是静态值,而是不能确定长度的变量。

现在用strcat_s函数,自己控制好第二个参数不超过数组上限,就不会出现问题。

还有一点,建议先用memset(str,0,size)函数进行初始化,不然之后使用的时候可能会在其中发现 ‘烫’ 这个字符,未初始化前就是这个值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式