我正在尝试使用基本的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 != '\0')
{
cout << *array3;
array3++;
}
}
char * stuff(char *s1, const char *s2)
{
char *p = s1;
while (*p != '\0')
{
p++;
}
while (*s2 != '\0')
{
*p = *s2;
p++;
s2++;
}
return s1;
}
我想知道是否有人可以通过基本编程来帮助我修复此代码。我目前没有使用此代码获得任何输出,我认为问题在于我如何调用该函数,但我不确定。
我发现了我的错误,我应该刚刚打印出第一个数组,因为它将第二个数组添加到第一个数组。
答案 0 :(得分:2)
问题是,您正在修改array
,而不是array3
。 array
只有9个字符(+最后的零字节)。
答案 1 :(得分:1)
您的问题的解决方案:
你的程序应该是这样的:
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 != '\0')
{
p++;
}
while (*s2 != '\0')
{
*p++ = *s2++;
}
return s1;
}
您的代码存在其他问题:
char *array3 = new char[50];
array3 = stuff(array, array2);
这是不对的。您为array3
分配了内存,但您没有使用它。当您为array3
分配新值时,50字节内存被泄露。