我正在尝试编写自己的函数,以便通过给定的长度和起始索引将给定指针子串到字符串数组。
当我执行代码时,我收到错误“Debug Assertion Failed”。程序在“tcscpy_s.inl”中失效(表达式:L“缓冲区太小”&& 0)
这是我的代码:
char* String_Substring(char* OriginalString, int StartIndex, int Length)
{
// Allocate space for the new string by it's given length.
char* StrToRet = (char*)malloc((Length + 1) * sizeof(char));
// Move to the start position of the sub - string.
OriginalString += StartIndex;
// Copy the requested sub - string to 'StrToRet'
strcpy_s(StrToRet, Length, OriginalString);
return StrToRet;
}
我该如何解决这个问题?
答案 0 :(得分:2)
缓冲区大小不包括终止0
的空间(尽管分配正确完成)。尝试
strcpy_s(StrToRet, Length + 1, OriginalString);
答案 1 :(得分:0)
尝试为StrToSet分配更多内存。 确保StartIndex和Length非负数和OriginalString更正为null终止字符串。