gpt4 book ai didi

c - 此 C 代码中的两个错误是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:02 24 4
gpt4 key购买 nike

char * append(char s1[], char s2[]) {

int s1len = strlen(s1);
int s2len = strlen(s2);
int k;
for(k = 0; k<s2len; k++) {
s1[k+s1len+1] = s2[k];
}
return s1;
}

据说这段代码中有两个错误.. 识别它们并解释它们为什么是错误并修改代码以纠正它们...

我发现的错误是您不能返回数组,而且 s2 甚至没有被修改为首先返回....

我错了吗?我不知道真正的错误是什么。

谢谢!

最佳答案

  1. s1[k+s1len+1] 应该是 s1[k+s1len] 。否则,您会将 s1 的尾随空值留在附加字符串的中间。

  2. 您需要在追加 s2 的所有字符后追加一个空终止符。您可以通过将循环结束条件更改为 k <= s2len 来自动实现这一点。

查看两个字符串 abcdefg :

s1 = abc\0
0123
s2 = defg\0
01234
s1len = 3
s2len = 4

你想要的结果是:

s1 = abcdefg\0
01234567

k = 0 , k+s1len+1 = 4 时,您的代码将 s2 的第一个字符放在这里:

abc\0d
0123 4

所以 null 字节被留在原地。当循环完成时,整个结果是:

abc\0defg

中间有一个 null ,但最后没有 null ,因为你复制的最后一个字符是 k = 3

关于c - 此 C 代码中的两个错误是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693130/

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