实施一项功能:
char* subCstring(char * inStr, int start_index, int end_index)
将char数组作为输入作为c-string,并返回start_index和end_index之间相应字符的c-string。
答案 0 :(得分:0)
我们可以蚕食输入字符串,过早地将其置零并在字符串内部进一步返回指针。
char* subCstring(char * inStr, int start_index, int end_index)
{
inStr[end_index] = '\0'; // end_index + 1 if the end index is inclusive
return &inStr[start_index];
}
注意,这不会检查以确保start小于end并且两者都在输入字符串的范围内。您可能需要添加此类检查。
答案 1 :(得分:0)
如果你不能蚕食你的输入字符串,即是只读的,那么你可以将malloc内存用于函数中的结果,之后不要忘记 free :
char* subCstring(char * inStr, int start_index, int end_index)
{
char *out = (char *) malloc(end_index - start_index + 2); // need '2' here to keep '\0'
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以更优雅的方式完成它。
答案 2 :(得分:-1)
"{0:.{?}f}".format(t, precision).center(width)