使用指针编写 strcat 函数
writing the strcat function with pointers
我正在尝试编写具有基本c ++功能的strcat
函数。到目前为止,我想出了这个:我写了一个函数来完成这项工作,它返回一个指针:
char * stuff (char *s1, const char *s2);
int main(int argc, char** argv)
{
char array[10] = "hello";
char array2[30] = "good morning";
char *array3 = new char[50];
array3 = stuff(array, array2);
while (*array3 != ' ')
{
cout << *array3;
array3++;
}
}
char * stuff(char *s1, const char *s2)
{
char *p = s1;
while (*p != ' ')
{
p++;
}
while (*s2 != ' ')
{
*p = *s2;
p++;
s2++;
}
return s1;
}
我想知道是否有人可以帮助我通过基本编程修复此代码。我目前没有使用此代码获得任何输出,我认为问题在于我如何调用该函数,但我不确定。
我发现了我的错误,我应该只打印第一个数组,因为它正在将第二个数组添加到第一个数组中。
问题是,您正在修改array
,而不是array3
。 array
只有 9 个字符(+ 最后的零字节(的位置。
您的问题的解决方案:
你的程序应该是这样的:
char * stuff (char *s1, const char *s2);
int main(int argc, char** argv)
{
char array[50] = "hello"; // make sure array has enough space
char array2[30] = "good morning";
stuff(array, array2);
cout << array; // you can output char array directly, no need to traverse
}
char * stuff(char *s1, const char *s2)
{
char *p = s1;
while (*p != ' ')
{
p++;
}
while (*s2 != ' ')
{
*p++ = *s2++;
}
return s1;
}
代码的其他问题:
char *array3 = new char[50];
array3 = stuff(array, array2);
这是不对的。您为array3
分配了内存,但您没有使用它。当您为array3
分配新值时,50 字节的内存被泄漏。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 类似于strcat()的函数出现问题
- 字符串函数:strcat()
- 从 'char' 到 'char*' strcat 函数的转换无效
- 使用指针编写 strcat 函数
- 使用char数组的strcat函数
- 我正在尝试创建自己的 strcat() 函数,而不是使用库实现函数<cstring>
- 为什么我无法将迭代器作为字符串传递给函数 strcat() 的参数
- 如何修复strcat函数中的错误
- C++ 字符串行为在定义和在 strcat 函数中是不同的