wcsncat_s显示错误断言字符串未终止

时间:2017-12-07 20:38:58

标签: c++ winapi

我想追加char。成功编译后,它显示错误断言失败。

  

L“字符串未终止。第124行

    #include <iostream>
    #include <windows.h>
    #include <string>

int main(){
    wchar_t jszProcessName[4096];
    wcsncat_s(jszProcessName, L"iloveyou", 1000);

    wcout << jszProcessName;
return 0;
}

2 个答案:

答案 0 :(得分:2)

您的未初始化数组可能没有0的值,这是wcsncat_s函数所期望的值。首先zero initialize数组:

wchar_t jszProcessName[4096] = {};

或将第一个元素设置为空终止符:

jszProcessName[0] = L'\0';

相当于0的整数值:

jszProcessName[0] = 0;

如果没有它,您的wcsncat_s函数会调用undefined behavior

答案 1 :(得分:2)

将目标数组的第一个字符设置为0. wcsncat_s 追加到字符串;这意味着它在字符串的末尾查找终止null,并在该点复制新文本。如果没有终止null,你的程序会进入lala-land。