实现Strcat函数

时间:2011-03-29 11:16:00

标签: c++ c visual-studio function

我有一个关于strcat()函数实现的编程问题。 我一直在尝试解决这个问题,但我遇到了一些访问冲突错误。

我创建的功能:

char str_cat(char str1, char str2)
{
    return str1-'\0'+str2;
}

上面的代码有什么问题?

还有一个问题, 是“iostream”头文件?我在哪里可以得到它?

感谢

3 个答案:

答案 0 :(得分:1)

上述代码中没有任何内容。

  • 您需要采用char *参数
  • 如果必须退回某些内容(不需要),则需要返回char *
  • 您需要循环复制单个字符的字符串 - 使用+-
  • 无法轻松解决问题
  • 您需要0终止结果

E.g。像这样:

void strcat(char * Dest, char const * Src) {
  char * d = Dest;
  while (*d++);
  char const * s = Src;
  while (*s) { *d++ = *s++; }
  *d = 0;
}

为什么你需要这样做吗?标准库中有一个非常好的strcat,并且有一个非常好的std::string可以使用+

答案 1 :(得分:1)

不幸的是,所有都是这个函数的错误,甚至是返回类型和参数类型。它应该看起来像

char * strcat(const char *str1, const char *str2)

它应该通过分配一个足够大的新内存块来使用malloc(对于C)或new(对于C ++)来保存连接字符串,然后将两个字符串复制到其中。不过,我认为你已经完成了你的(家庭)工作,因为我认为你不了解其中的任何内容。

答案 2 :(得分:1)

不想听到负面声音,但这段代码没有多少权利。

首先,C中的字符串是char *,而不是char。

其次,没有办法按照你希望的方式“添加”或“减去”它们(比如python中的那种可能)。

iostream是C ++的标准I / O标头,它应该与您的发行版捆绑在一起。

我会真的建议一个关于让你前进的指针的教程 - this我发现只是通过谷歌搜索“ansi c指针” - 我猜这个问题要求你找一个C回答而不是C ++,因为在C ++中你会使用std :: string和重载的运算符+。