gpt4 book ai didi

C 字符串连接 - 奇怪的字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:47 25 4
gpt4 key购买 nike

我正在编写一个 C 程序,它接受 n 字符串并使用 strcat 连接它们。首先,我将目标字符串分配到 sizeof(char)* 每个字符串的 strlen + 1(对于空字符)。然后使用 for 我使用 strncat 创建最终字符串。在 and 处,我附加了空字符。

一切正常,但有时,在目标字符串的开头,有一些奇怪的字符(例如,'?')。当在程序执行期间,最终字符串比之前(在同一执行期间)短时,就会发生这种情况。

有什么我想念的吗?

这是代码:

size = 0;
for(i = 0; i < n; i++) {
size += sizeof(char)*(strlen(strings[i]));
}

size++;

target = malloc(size);

if(!target) { /** Error handling... */ }

for(i = 0; i < n; i++) {
target = strncat(target, strings[i], strlen(strings[i]));
}

target[size] = '\0';

谢谢,

—多诺万

最佳答案

在分配目标字符串后,您应该首先将其初始化为空字符串。

target[0] = '\0';

在第一次调用 strncat 时,第一个字符串将附加到目标。如果您的目标未初始化,它可能不为空,这会导致您看到乱码。

(另一种解决方案是使用 strncpy 将第一个字符串复制到目标中,然后将以下字符串附加到它。)

关于C 字符串连接 - 奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931457/

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