首页新闻找找看学习计划

一个c语言输出问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-11-10 22:18
1 char s[4];
2 strncpy( s , "1" , 4);
3 printf("%d %d %d %d\n",s[0],s[1],s[2],s[3]);

这段代码为什么输出是:49 0 0 0

s占4个字节,执行第二条时,用”1“覆盖了s的第一个字节,那么s应该变成0X01 00 00 00了吧?

实际上s变成了0X31 00 000 0

实在是想不明白了?

c
问题补充:

s占4个字节,执行第二条时,用”1“覆盖了s的第一个字节,那么s应该变成0x01 00 00 00了吧?

光与存在的主页 光与存在 | 初学一级 | 园豆:133
提问于:2013-10-18 10:06
< >
分享
最佳答案
0

LZ是初学者吧?

1 char s[4];  //声明了一个大小为4的数组S,初始值为[0,0,0,0]

2 strncpy( s , "1" , 4);  //复制了一个"1"进S,"1"的Ascii码为49 s现在是[49,0,0,0]

3 printf("%d %d %d %d\n",s[0],s[1],s[2],s[3]);  //打印4个 49 0 0 0

收获园豆:5
_cha1R | 菜鸟二级 |园豆:403 | 2013-10-18 10:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册