字符串截取问题

#include <iostream>
#include <stdio.h>
int main(void)
{
     char s[]="123456789";
     char d[]="123";
     strcpy(d,s);
     printf("%s,%s",d,s);
     return 0;
}
结果:
123456789,56789
解析:
在内存中分配如下:
copy前      copy后
b->1 ------> 1
     2            2
     3            3
                4
s->1 ------> 5
     2            6
     3            7
     4            8
     5            9
     6            
     7            7
     8            8
     9            9
               
在栈中,变量是分配是按照栈低到栈顶的,栈低地址比栈顶地址大,因为b分配空间不够,因此,在copy时向下占据a空间,则copy后内存分配如上图。
原文地址:https://www.cnblogs.com/striver-zhu/p/4760729.html