从 1 中创建新的字符 * 作为参数,元素位于 2 个索引之间
Make new char * from 1 given as argument with elements between 2 indexes
我正在尝试编写一个函数,以从另一个作为参数给出的字符数组创建一个新的 char 数组,元素位于 2 个指定索引之间。
char * split(char * array, int i, int j){
int x = 0;
char * newArray;
for (int m = i; m < j; m++){
newArray[x] = array[m];
x++;
}
return newArray;
}
例如:
char * s = "helloworld";
char * first = split(s, 0, 5); // 'hello'
char * second = split(s, 5, 10); // 'world'
但是由于某种原因,在我尝试在函数调用后访问"第一个"或"第二个"的任何元素后,它一直给我分段错误。
您从未为char * newArray
分配实际内存(甚至将其初始化为 NULL
等(,因此它是一个指向未分配内存的垃圾地址。
第一次执行newArray[x] = array[m];
调用未定义的行为时; newArray
指向???newArray[x]
指向"x
个字节超过 ???",这仍然是???.您需要自己分配内存并将指向它的指针存储在newArray
中(为 NUL
终止符分配一个额外的字节(,通过复制来初始化它(并确保在末尾为 C 样式字符串设置一个 NUL
字节(,然后返回它。
请注意,鉴于您使用的是C++,您实际上应该只使用std::string
及其substr
方法,从而省去很多麻烦。
相关文章:
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 使用折叠表达式打印每个元素之间的空格
- 如何计算大小为 1000 x 1000 的 2D 数组中 2 个元素之间的步幅?C++
- OpenCV 文件存储 - 错误:元素之间的解析错误 (icvYMLParseValue) 缺失
- C++ - 前两个元素之间的差异
- 字符串和向量<string>元素之间的区别
- 当我删除数组时,指针在哪里?指向数组的指针与数组中的元素之间的区别
- 在给定某些约束的情况下,求出元素之间的最大距离
- 矢量<unique_ptr>元素之间的指针<myclass>
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- OpenGL:在两个元素之间画一条线
- 元素之间的输出逗号
- 是否保证 std::vector 不会在元素之间留下间隙
- 为什么我的程序是,数组中任意两个元素之间的最小差异,给出相反的结果
- 使用boost multiarray迭代器在数组元素之间进行赋值
- googletest匹配器,用于检查容器元素之间的关系
- C++数据结构,用于存储两组唯一元素之间的多个关系
- 为在unordered_set中查找指定元素之间的相等性
- 如何在两个容器的元素之间执行成对二进制操作?
- 如何获得两个std::set的元素之间的差异<string>?