wcscat_s() 总是报错 Buffer is too small 的处理

总是希望在原有的字符串后面 追加 新的字符串,但总是报错!

wcscat_t(strDestination, size, strSource);

   1、Buffer is too small:明明自申请的内存空间很大,第一次追加 strSource后,第二次就报错: Buffer is too small。处理:查了网上不少说法,认为正确的理解应该是:wcscat_t函数从 strDestination 的 '\0' 开始并替换它,写入strSource。参考strcat的有关文档,当首字符为'\0'时,直接用 strSource 替换 strDestination。第二次在写入将再从 \0 并替换它 开始写入 strSource,第二个参数就是用于边界检查的。参考文档 (没有找到 wcscat_t 的 )

  wchar_t *wcscat(

    wchar_t (&strDestination)[size],

     const wchar_t *strSource );

  我认为第二个参数应该是 strDestination 的最大长度(网上很多说是 strSource 的长度,然后在 +1 用于补 ‘\0‘,验证了好多回,不行),我测试的 strSource 是同一个串,第二次写入时,如果还是以 strSource 的长度作为第二个参数,strDestination 的'\0' 已经由 strSource 第一次传入,写在了末尾,没有空间再写入了,故报错 too small 。太短?这不能,都懂的!改长,第二参数哟个 strDestination 的 MAX_SIZE 就OK 了!

 

posted @ 2024-02-29 00:40  O-Y  阅读(87)  评论(0编辑  收藏  举报