1

下面的代码在我的头文件中:

char mystrcat(char *s1, const char *s2) //strcat function
{
  mystrcpy(s1 + mystrlen(s1), s2);
  return s1;
}

错误是返回 s1;“返回值类型与函数类型不匹配。” 我知道 strcat 函数将源字符串的副本附加到目标字符串,但是我将如何解决此错误。我的代码的另一部分在 main.cpp 如果您需要更多代码,请告诉我。

4

3 回答 3

1

你的签名应该看起来像

char* mystrcat(char *s1, const char *s2)
 // ^~~~~~ Note the pointer
于 2013-07-03T22:40:24.923 回答
1

你的函数应该返回char,但你返回s1的是char*

确保您了解问题,可能在末尾没有分配空间s1

于 2013-07-03T22:37:30.393 回答
0

1)错误:“返回值类型与函数类型不匹配原因:s1是char *;您的签名返回“char”解决方案:将您的签名更改为char *

2) 什么是 mystrcpy()?那里可能潜伏着什么错误?

3) 更重要的是,谁为您返回的“s1”分配空间?

4)如果返回值大于原始值(可能的情况)会发生什么?你有缓冲区溢出吗?

5)如果原始值是只读的(另一种可能的情况)会发生什么?

ETC...

于 2013-07-03T22:41:00.927 回答