strcpy函数产生内容覆盖

#include  < stdio.h >
#include 
<string .h >

main()
{
    
char  s[] = " 123456789 " ;
    
char  d[] = " 123 " ;

    strcpy(d, s);

    printf(
" %s \n%s \n " , d, s);

    
return   0 ;
}

 

输出:

123456789
56789

分析:

以上代码在VC环境下运行。调试运行,内存状态如下:

step1. 运行完char s[]="123456789";后的内存:

0012FF70  CC CC CC CC 31 32 33 34 35 36 37  烫烫1234567
0012FF7B  38 39 00 CC CC C0 FF 12 00 D9 13  89.烫......

 

step2. 运行完char d[]="123";后的内存:

0012FF70  31 32 33 00 31 32 33 34 35 36 37  123.1234567
0012FF7B  38 39 00 CC CC C0 FF 12 00 D9 13  89.烫......

 

step3. 运行完strcpy(d, s);后的内存:

0012FF70  31 32 33 34 35 36 37 38 39 00 37  123456789.7
0012FF7B  38 39 00 CC CC C0 FF 12 00 D9 13  89.烫......

 

变量的观察值如下:

- d         0x0012ff70 "123456789"
   [0]      49  '1'
   [1]      50  '2'
   [2]      51  '3'
   [3]      52  '4'
- s         0x0012ff74 "56789"
   [0]      53  '5'
   [1]      54  '6'
   [2]      55  '7'
   [3]      56  '8'
   [4]      57  '9'
   [5]      0    ' '
   [6]      55  '7'
   [7]      56  '8'
   [8]      57  '9'
   [9]      0    ' '

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值