关于strcpy_s strcat_s 一点问题

最近在学习一些.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 一样的道理

 

posted on 2013-04-14 09:54  Breeze-Chen  阅读(1097)  评论(2编辑  收藏  举报