gpt4 book ai didi

c++ - VS2008 中的 char[] 问题 - 为什么 strcat 附加到空数组的末尾?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:14:32 25 4
gpt4 key购买 nike

我正在传递一个空字符数组,我需要使用 strcat() 递归填充它。然而,在 VS 调试器中,数组不是空的,它充满了一些我不认识的奇怪的垃圾字符。 strcat() 然后附加到这些垃圾字符的末尾,而不是数组的前面。

我也尝试过 encoded[0] = '\0' 在传递数组之前清除垃圾,但是 strcat() 不会在递归调用中附加任何内容。

这是提供数组并调用递归函数的代码:

char encoded[512];
text_to_binary("Some text", encoded);

这是递归函数:

void text_to_binary(const char* str, char* encoded)
{
char bintemp[9];
bintemp[0] = '\0';

while(*str != '\0')
{
ascii_to_binary(*str, bintemp);
strcat(encoded, bintemp);
str++;
text_to_binary(str, encoded);
}
}

这是怎么回事?

附言。我无法使用 std::string - 我被 char* 困住了。

编辑: 这是数组中的垃圾字符:ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ...

最佳答案

您没有初始化数组。变化:

char encoded[512];

char encoded[512] = "";

关于c++ - VS2008 中的 char[] 问题 - 为什么 strcat 附加到空数组的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2021657/

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