我正在尝试使用VS 2013在C ++中连接两个字符串。以下是代码:
char *stringOne = "Hello";
char *stringTwo = " There!";
char *hello = new char[strlen(stringOne) + strlen(stringTwo) + 1];
strcpy_s(hello, strlen(hello), stringOne);
//hello[strlen(stringOne)+1] = '\0';
strcat_s(hello, strlen(hello), stringTwo);//<-----Does not return from this call
如果注释了strcat_s语句,则该语句运行良好,并且* hello包含“ Hello”。
但是,VS表示,应用程序在显示以下内容后触发了一个断点:
表达式:(L“字符串不为null终止” && 0)
无论如何我都尝试不了。我发现的最接近的现有问题是here。按照规定,手动将最后一个字符设置为null也无济于事。
有任何想法吗?
最佳答案
strlen(hello)
是错误的字符串长度,由于hello
尚未初始化,因此在那时是完全垃圾。
您用来分配目标缓冲区的表达式strlen(stringOne) + strlen(stringTwo) + 1
是要传递的适当长度。
最好也习惯于检查_s
函数的返回值,因为那样您会知道第一个函数调用已经失败。
关于c++ - strcpy_s给出错误后的strcat_s,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49649645/