【发布时间】:2014-02-11 04:29:08
【问题描述】:
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;
}
据说这段代码有两个bug..找出它们并解释为什么是bug并修改代码以更正它们...
我发现的错误是你不能返回数组,而且 s2 甚至没有被修改为首先返回......
我错了吗?我不知道真正的错误是什么。
谢谢!
【问题讨论】:
-
s1[k+s1len+1]呢? -
问题你问的真正问题是什么??
-
不能返回本地数组,但
s2不是本地数组。它是指向参数数组的指针。 -
如果 strlen s2 > strlen s1, bad access.also this part s1[k+s1len+1]
-
你怎么知道s1有足够的内存来追加s2?