从给定索引返回子字符字符串的函数
Function that returns a sub char string from given Indices
实现一个函数:
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;
}
相关文章:
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将 NULL 与 C 的字符* 字符串一起使用
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法将常量字符字符串传递给模板类
- 如何组合一个宽字符字符串,中间插入一些空字符
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 从给定索引返回子字符字符串的函数
- 字符 [](c 字符串)的初始化标准
- 如何将字符字符串用作数学运算符
- 将 Unicode 字符/字符串写入文件
- C++,字符* 字符串修改
- 如何有效地用不同的整数元素替换字符字符串的元素
- C++:如果我们在字符串中添加一些整数,为什么它会从开头删除该数量的字符?(字符串 + 整数)
- strcpy正在复制sth字符i字符串.如何解决此错误
- 在C++中将双精度转换为字符*/字符串
- C 中的宽字符字符串
- 如何提取C 中的字符/字符串之间的字符串
- 无法将字符/字符串转换为int
- 带有指针的反转字符字符串
- 反转字符串中的 n 个字符(字符串中没有空格),而不使用 c++ 中的内置函数