在第一章中,K&R 介绍了一个函数拷贝如下:
void copy(char to[], char from[]) {
/* copy from from[] to to[], assumes sufficient space */
int i = 0;
while ((to[i] = from[i]) != '\0') {
i++;
}
}
稍微修改一下这个函数,我得到了一些意想不到的结果。示例程序:
int main() {
char a[3] = {'h', 'a', '\n'};
char b[3];
printf("a: %s", a); // prints ha
copy(b, a);
printf("a: %s", a); // prints nothing
printf("b: %s", b); // prints ha
return 0;
}
现在我的问题:
为什么从复制
a
到b
工作,这就是为什么即使a
不包含'\ 0',复制中的while循环也会终止?为什么会
a
变异?