这是我的代码
char *c[strlen(a) + strlen(b) + 2];
strcat(c, a);
strcat(c, "+");
strcat(c, b);
Run Code Online (Sandbox Code Playgroud)
结果字符串c在开头有一些垃圾字符,后跟连接的字符串.我做错了什么?
它应该是:
char *c = malloc (sizeof (char) * (strlen (a) + strlen (b) + 2));
c[0] = '\0';
strcat(c, a);
strcat(c, "+");
strcat(c, b);
Run Code Online (Sandbox Code Playgroud)
你日常生活失败的原因是因为你做了:
char *c[strlen(a) + strlen (b) + 2];
Run Code Online (Sandbox Code Playgroud)
它声明c为一个指针数组,也没有用a初始化数组'\0'.应该是这样的
char c[strlen(a) + strlen (b) + 2];
Run Code Online (Sandbox Code Playgroud)
您还必须使用空字符串初始化数组,就像在连接时strcat找到的那样'\0'.
请注意,错误执行没有问题,char *c[strlen(a) + strlen (b) + 2];因为每个位置的长度都是4个字节,因此数组可以容纳其中的字符.但这不正确.