我想追加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;
}
答案 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。