码迷,mamicode.com
首页 > 其他好文 > 详细

wcscpy_s与wcsncpy

时间:2016-05-28 15:49:57      阅读:729      评论:0      收藏:0      [点我收藏+]

标签:

 

今天运行以下代码时一直出错

void Foo(const wchar_t* lpch, int len)
{
...
wchar_t *str = new wchar_t[len+1];
wcscpy_s(str, len, lpch);
str[len] = \0;
...
}

Foo传入的是字符串的指针和其字符个数。按理说str已经分配了足够的内存空间了,但拷贝时还会出错,造成程序终止。

最后发现,误解了wcscpy_s的使用方法了,原来wcscpy_s的第二个参数指定了目标处地址所能拷贝的最大容量(包括了null字符),当从源字符串复制到目标字符串的字符个数(包括null)超过了第二个参数指定的值时,该函数将会执行不成功,具体表现见https://msdn.microsoft.com/en-us/library/td1esda9.aspx

按照我本意,我应该使用wcsncpy的。 wchar_t *wcsncpy( wchar_t *strDest, const wchar_t *strSource, size_t count ); 

wcscpy_s与wcsncpy

标签:

原文地址:http://www.cnblogs.com/sfqtsh/p/5537432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!