linux下c语言字符串指针问题
最近在linux下写了一小段代码(如下),非常简单的复制字符串的程序,将src中的字符串复制到dest中。
但是dest的长度给小了,导致没有复制完全,但是出来的结果我有点没有办法理解。哪位大神帮忙看看,解释一下其中原理。多谢了~
代码:
#include <stdio.h>
int main(void)
{
int i, n;
char src[] = "welcome...";
char dest[3]; // size is too small
i=0;
while(src[i] != '\0'){
printf("before, i=%d\t", i); // debug
dest[i] = src[i];
printf("after, i=%d\n", i); // debug
i++;
}
dest[i] = '\0';
puts(dest);
return 0;
}
运行结果:
before, i=0 after, i=0
before, i=1 after, i=1
before, i=2 after, i=2
before, i=3 after, i=99
问题:
为什么最后一次dest[i] = src[i]执行过之后, i会突然变成99?