这个基本的strcat实现有什么问题?

Dar*_*der 0 c

我是C的新手,我正在尝试编写一个简单的程序来连接两个字符串.在我的Linux机器上运行它时,我得到以下异常:

test.c:12:10:错误:'strcat'的冲突类型

你能帮我理解我在这里缺少的东西:

#include<stdio.h>
#include<string.h>

void main() {
  // string concatenation
  char str1[] = {'S', 'h'};
  char str2[] = {'X', 'y'};
  strcat(str1, str2);
}

void strcat(char str1[], char str2[]) {
  int index;
  int str1_length = strlen(str1);
  for(index=0; index<strlen(str2); index++) {
    str1[index + str1_length] = str2[index];
  }
}
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 5

strcat没有标准签名:

char *strcat(char *dest, const char *src);
Run Code Online (Sandbox Code Playgroud)

如果要包含,则需要使其匹配string.h.或者,只需为您的实现提供不同的名称(my_strcat例如).

您可能还希望null终止测试字符串 - strlen否则这些调用会给您带来非常有趣的结果.此外,为避免写入超过第一个字符串分配的内存的末尾(从而导致未定义的行为),请确保为其提供足够的空间以适应末尾的第二个字符串.