gpt4 book ai didi

c++ - 我的 append 功能没有按预期工作。 C++

转载 作者:行者123 更新时间:2023-11-30 01:59:21 25 4
gpt4 key购买 nike

我正在编写自己的追加函数,以使用静态字符缓冲区 [50] 在字符串数组 1 的另一个动态字符数组的末尾 append 字符串数组 2 的动态字符数组。但编译器会生成以下错误:[Error] incompatible types in assignment of 'char' to 'char[50]'。我试图找出问题所在,但似乎找不到解决方案。非常感谢您的帮助。我正在使用 Dev-C++。代码如下。

#include <iostream>


using namespace std;

char *Appendstring(char *a, char *b) // will append b to the end of a
{
static char buffer[50];
char *p=buffer=*a++; //[Error] incompatible types in assignment of 'char' to 'char[50]'
//[Error] invalid conversion from 'char*' to 'char'[-fpermissive]
p--;
while(*p++=b++);
p--; //append
while(*p++=*c++);
return buffer;


}

int main ()
{

string str="Displaying: ";
string add=" Summer is coming";

Appendstring(str, add);

return 0;
}

最佳答案

您的 append 函数中存在多个错误,最大的错误是使用数组作为指针并使用静态缓冲区合并字符串。有了静态缓冲区,所有合并的字符串都将在同一个空间中,因此合并两个字符串然后合并另外两个字符串会覆盖第一次合并的结果!

您可以按如下方式更改您的功能:

char *Appendstring(const char *a, const char *b)  // will append b to the end of a
{
char *buffer = new char[strlen(a)+strlen(b)+1];
char *p=buffer;
while(*p++=*a++); // Copy a into buffer
while(*p++=*b++); // Copy b into buffer right after a
*p=0; // Null-terminate the string
return buffer;
}

当然,调用者现在负责释放 Appendstring 的结果。

关于c++ - 我的 append 功能没有按预期工作。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com