最近在学习一些.NET互操作的问题,在用P/INVOKE 调用平台非托管函数时,经常要对字符格式进行转换。
发现strcpy_s 拷贝基本方法和strcpy一样,只是多了一个参数,
numberOfElements
目标字符串缓冲区的大小。
也可以只和strcpy一样只用2个参数,但是必须 是数组形式的例:char str[10],char str1[5], 当然最后还要加‘\0’
但如果是指针的话
char *str,*str1;
str=new char[10];
str1=new char[8];
str1="abc";
strcpy_s(str,strlen(str1)+1,str1);
printf("%s",str);
是要指定3个参数,不然就报错参数问题了,而且可以不用手动加‘\0’,只需在要拷贝字符长度加1 编译器会把最后一个字符自动转为'\0'。
这样就避免了经常出现L“Buffer is too small”的问题
还有 例如 strcat_s 。 wcscpy_s 一样的道理