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
实在是想不明白了?
s占4个字节,执行第二条时,用”1“覆盖了s的第一个字节,那么s应该变成0x01 00 00 00了吧?
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