C++ Strcat函数的实现

C++ Strcat函数的实现,c++,c,visual-studio,function,C++,C,Visual Studio,Function,我有一个关于strcat()函数实现的编程问题。 我一直在试图解决这个问题,但我遇到了一些访问冲突错误 我创建的函数: char str_cat(char str1, char str2) { return str1-'\0'+str2; } 上面的代码有什么错误 请再问一个问题, “iostream”是头文件吗?在哪里可以买到 谢谢以上代码中没有任何内容是正确的 您需要获取char*参数 如果必须返回某些内容(不需要),则需要返回char* 您需要在复制单个字符的字符串上循环-使用

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

我创建的函数:

char str_cat(char str1, char str2)
{
    return str1-'\0'+str2;
}
上面的代码有什么错误

请再问一个问题, “iostream”是头文件吗?在哪里可以买到


谢谢

以上代码中没有任何内容是正确的

  • 您需要获取
    char*
    参数
  • 如果必须返回某些内容(不需要),则需要返回
    char*
  • 您需要在复制单个字符的字符串上循环-使用
    +
    -
  • 您需要0-终止结果
例如,像这样:

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
,您可以在其上使用
+

不幸的是,这个函数的一切都是错误的,甚至返回类型和参数类型也是如此。应该是这样的

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

它应该通过使用malloc(对于C)或new(对于C++)分配一个足够大的新内存块来保存连接的字符串,然后将两个字符串复制到其中。不过,我认为你的(家庭)工作很适合你,因为我认为你不太清楚这意味着什么。

我不想听起来很消极,但这段代码没有多少正确之处

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

其次,没有办法像你希望的那样“加”或“减”它们(这在某种程度上是可能的,比如说python)

IoStand是C++的标准I/O头,应该与您的分布捆绑在一起。


<>我想<强> > >强>建议一个指针来引导你前进——我只是通过Google“ANSI C指针”来发现的。我猜问题是要求你有一个C回答而不是C++,因为在C++中你会使用STD::String和重载操作符+./P>请选择一个<代码> C<代码>或<代码> C++ > /Cord>。在
C
中,答案将涉及指针,在
C++
中,我认为,它将涉及
std::string
。人们仍然在向他扔答案(代码)!这显然是作业,你为什么这么想为他做呢?@Ernest:考虑到他的问题的程度,他将无法解释while循环,并且将不得不重新执行它,以便他的老师不会在抄袭方面抓到他。