关于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"));
请教下,一和二那种写法是对的 展开
假如:
char csName[20];
strcpy_s(csName, 20, _T("123"));
则:
一、
strcat_s(csName,20,_T("456"));
二、
strcat_s(csName,20-3,_T("456"));
请教下,一和二那种写法是对的 展开
展开全部
您好!
在VS2005之后,为了防止数据溢出问题,特意引进了所谓的安全函数strxxx_s系列。
其中 strcat_s(str1, num, str2); 第二个参数是指定str1长度。
ep : strcat_s(str,sizeof(str),"456");
另外不建议使用strcpy_s函数初始化一个char*,会引起不必要的麻烦。
可以直接 char csName[20] = "123";
希望能帮助到您。
在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)函数进行初始化,不然之后使用的时候可能会在其中发现 ‘烫’ 这个字符,未初始化前就是这个值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询