gpt4 book ai didi

C strcat 垃圾字符

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

我在 C 中有一个函数,我试图从两个不同的位置(未知大小,可能很大)获取字符串并将它们组合成一个字符串并返回它们。如果我只打印两个字符串,那么我会得到正确的结果,但是当我尝试使用 strcat 组合字符串时,我最终会得到 5 个垃圾字符,然后是组合字符串的结果。

有人对我做错了什么有一些建议吗?下面是一些示例代码来演示我在做什么:

static int get_information(char** results)
{
size_t s1_length;
size_t s2_length;

/* DEBUGGING - Prints the correct string */
printf(get_string_1());
printf(get_string_2());
printf("\n");

/* Allocate memory for new string */
s1_length = strlen(get_string_1());
s2_length = strlen(get_string_2());
*results = malloc(sizeof(char) * (dir_length + file_length));

if(results == NULL)
return -1;

/* Combine the strings */
strcat(*results, get_string_1());
strcat(*results, get_string_2());

/* DEBUGGING - prints 5 garbage characters then the correct string */
printf(*results);
printf("\n");

return 0;
}

最佳答案

strcat需要在目标中找到空终止符。您的 *result指向未初始化的内存,其中恰好有一个空终止符 5 个字符。

添加 *result[0]='\0';在组合字符串之前应该修复它。

此外,您没有为 *result 中的空终止符分配足够的空间.

关于C strcat 垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752353/

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