gpt4 book ai didi

c - 为什么在连接字符串时会出现垃圾字符?

转载 作者:行者123 更新时间:2023-12-04 09:16:29 24 4
gpt4 key购买 nike

这是我的代码

    char *c[strlen(a) + strlen(b) + 2];
strcat(c, a);
strcat(c, "+");
strcat(c, b);

生成的字符串 c 开头有一些垃圾字符,后面是连接的字符串。我做错了什么?

最佳答案

应该是:

char *c = malloc (sizeof (char) * (strlen (a) + strlen (b) + 2));
c[0] = '\0';
strcat(c, a);
strcat(c, "+");
strcat(c, b);

你的例程失败的原因是因为你做了:

char *c[strlen(a) + strlen (b) + 2];

c 声明为指针数组,并且也未使用 '\0' 初始化该数组。应该是这样的

char c[strlen(a) + strlen (b) + 2];

您还必须使用空字符串初始化数组,因为 strcat 会在连接时找到 '\0'

注意在char *c[strlen(a) + strlen (b) + 2];中执行错误是没有问题的,因为每个位置的长度都是4字节,所以数组可以容纳其中的字符。但这是不正确的。

关于c - 为什么在连接字符串时会出现垃圾字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com