下面的代码在我的头文件中:
char mystrcat(char *s1, const char *s2) //strcat function
{
mystrcpy(s1 + mystrlen(s1), s2);
return s1;
}
错误是返回 s1;“返回值类型与函数类型不匹配。” 我知道 strcat 函数将源字符串的副本附加到目标字符串,但是我将如何解决此错误。我的代码的另一部分在 main.cpp 如果您需要更多代码,请告诉我。
下面的代码在我的头文件中:
char mystrcat(char *s1, const char *s2) //strcat function
{
mystrcpy(s1 + mystrlen(s1), s2);
return s1;
}
错误是返回 s1;“返回值类型与函数类型不匹配。” 我知道 strcat 函数将源字符串的副本附加到目标字符串,但是我将如何解决此错误。我的代码的另一部分在 main.cpp 如果您需要更多代码,请告诉我。
你的签名应该看起来像
char* mystrcat(char *s1, const char *s2)
// ^~~~~~ Note the pointer
你的函数应该返回char
,但你返回s1
的是char*
确保您了解问题,可能在末尾没有分配空间s1
1)错误:“返回值类型与函数类型不匹配原因:s1是char *;您的签名返回“char”解决方案:将您的签名更改为char *
2) 什么是 mystrcpy()?那里可能潜伏着什么错误?
3) 更重要的是,谁为您返回的“s1”分配空间?
4)如果返回值大于原始值(可能的情况)会发生什么?你有缓冲区溢出吗?
5)如果原始值是只读的(另一种可能的情况)会发生什么?
ETC...