10 回答 10
This answer is useful
5
您strcat没有标准签名:
char *strcat(char *dest, const char *src);
如果要包含,则需要使其匹配string.h。或者,只需给您的实现一个不同的名称(my_strcat例如)。
您可能还希望以空值终止您的测试字符串 -strlen否则这些调用会给您带来非常有趣的结果。此外,为避免写到第一个字符串分配内存的末尾(从而导致未定义的行为),请确保给它足够的空间以容纳末尾的第二个字符串。
于 2013-01-04T06:19:33.957 回答
This answer is useful
2
您的代码中有很多错误。首先,字符串 str1 和 str2 应该以 null 结尾。您可以通过将其声明更改为
char str1[] = "Sh";
char str2[] = "Xy";
或者
char str1[] = {'S', 'h', '\0'};
char str2[] = {'X', 'y', '\0'};
其次,strcat是一个保留名称,因此您的 main 函数不会调用您的版本,而是在头文件中找到的版本
于 2013-01-04T08:15:52.277 回答
This answer is useful
2
除了其他人所说的名称冲突之外,您也没有正确的字符串。
在 C 中,字符串以空终止符 ( \0) 结尾。
你已经用这种方式制作了你的字符串:
char str1[] = {'S', 'h'};
所以它只有两个字符,S 和 h。
要使字符串可由函数使用,例如strlen,它必须有一个空终止符。
我建议:
char str1[] = {'S', 'h', '\0'};
于 2013-01-04T06:32:22.173 回答
This answer is useful
2
C 语言中有预定义的函数“strcat”(在 string.h 中),所以当您尝试调用 strcat 时,编译器似乎在该 inbuild 函数和您定义的函数之间存在冲突。所以最好重命名你的 strcat 函数。
于 2013-01-04T06:34:11.750 回答
This answer is useful
1
string.h已经提供了一个strcat,所以只需将您的函数重命名为其他名称。
于 2013-01-04T06:18:55.560 回答
This answer is useful
1
库中已经strcat定义了一个string.h带有签名的函数char *strcat(char *Destination, char *Source);。您的用户定义函数与之冲突。由于 C 不支持重载,因此您需要重命名函数。
在连接之前,您还必须声明您的目标 char 数组,以便它有足够的空间来保存连接的字符串。如果没有,您将在数组绑定上运行,这可能会导致奇怪的问题。
此外,您的字符串应该以空结尾,因为标准库依赖于它来确定字符串的结束位置。如果没有空终止符,则strlen无法计算字符串长度(除非意外下一个内存位置恰好有一个 NULL 字符 - 您永远不应该依赖此类意外)。
于 2013-01-04T06:19:21.233 回答
This answer is useful
1
您的函数不能具有该名称,因为它是在 string.h 中声明的。只需将您的函数重命名为 myStrcat 或类似的名称。
于 2013-01-04T06:20:04.817 回答
This answer is useful
1
替换strcat为str_cat, 因为您的函数名称与已存在的函数冲突string.h
#include
#include
void main() {
// string concatenation
char str1[] = {'S', 'h'};
char str2[] = {'X', 'y'};
str_cat(str1, str2);
}
void str_cat(char str1[], char str2[]) {
int index;
int str1_length = strlen(str1);
for(index=0; index str1[index + str1_length] = str2[index]; } } 于 2013-01-04T06:20:17.237 回答 This answer is useful 0 只需更改您的代码如下: replace char str1[] = {'S', 'h'} by char str1[] = {'S', 'h', '\0'}; replace char str2[] = {'X', 'y'} by char str2[] = {'X', 'y', '\0'}; 于 2013-01-04T07:56:06.803 回答 This answer is useful 0 #include #include void mystrcat(char str1[], char str2[]); void main() { char str1[] = {'S', 'h' , '\0'}; char str2[] = {'X', 'y', '\0'}; mystrcat(str1, str2); } // string concatenation void mystrcat(char str1[], char str2[]) { int index; int str1_length = strlen(str1); for(index=0; index str1[index + str1_length] = str2[index]; } str1[index + str1_length] = '\0'; printf("%s\n",str1); } 于 2013-01-04T09:05:42.407 回答