尝试创建子字符串时断言失败错误

时间:2014-10-14 19:19:24

标签: c string malloc assertions strcpy

我正在尝试编写自己的函数,以便通过给定的长度和起始索引将给定指针子串到字符串数组。

当我执行代码时,我收到错误“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;
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

缓冲区大小不包括终止0的空间(尽管分配正确完成)。尝试

strcpy_s(StrToRet, Length + 1, OriginalString);

答案 1 :(得分:0)

尝试为StrToSet分配更多内存。 确保StartIndex和Length非负数和OriginalString更正为null终止字符串。