从给定索引返回子字符字符串的函数

Function that returns a sub char string from given Indices

本文关键字:字符 字符串 函数 返回 索引      更新时间:2023-10-16

实现一个函数:

char* subCstring(char * inStr, int start_index, int end_index)

这将一个 char 数组作为输入,该数组是一个 C 字符串,并返回 start_index 和 end_index 之间相应字符的 C 字符串。

我们可以蚕食输入字符串,过早地将其清空并在字符串内进一步返回指针。

char* subCstring(char * inStr, int start_index, int end_index)
{
    inStr[end_index] = ''; // end_index + 1 if the end index is inclusive
    return &inStr[start_index];
}

请注意,这不会进行检查以确保 start 小于 end,并且两者都在输入字符串的范围内。您可能需要添加此类检查。

如果你不能蚕食你的输入字符串,即是只读的,那么你可以在函数中为结果 malloc 内存,不要忘记事后释放它:

char* subCstring(char * inStr, int start_index, int end_index)
{
    char *out = (char *) malloc(end_index - start_index + 2); // need '2' here to keep ''
    strncpy(out, inStr + start_index, end_index-start_index+1);
    return out;
}

如果在第二次调用函数之前使用函数的结果,则还可以对结果使用静态分配。

char* subCstring(char * inStr, int start_index, int end_index)
{
    static char out [256];
    strncpy(out, min(255, inStr + start_index, end_index-start_index+1));
    return out;
}

您还可以在参数中传递为结果分配的内存。

或者你可以使用'C++'std::string以更优雅的方式做到这一点。

 char* subCstring(char * inStr, int start_index, int end_index) {
    char * sub = new char[end_index];
    sub[end_index] = '';
    strncpy(sub, inStr+start_index, end_index);
    return sub;

}