使用 strcat 遇到一个匪夷所思的问题
在程序中声明了四个字符串如:char ver[23 + 25] = "(初始赋给22个字符)"
char seq[25]
char mm[16] = "(初始赋给14个字符)“
char ps[33 + 5] = "(初始赋给4个字符)”
char buf[33]
fun(seq) /* 把24字节数据装入seq中*/
fun2(buf) /* 把32字节装入buf中*/
然后调用strcat
1、strcat(ver,seq)
2、strcat(ps, buf)
执行完第一步printf出mm的值没有变,执行完第二步printf出mm的值为空。ps的值是正确的。
然后调试了一下发现执行第一步后mm在内存中的值为
“ABABABABABABAB\00"
执行第二步后mm在内存中的值为
“\000BABABABABABAB\000" /* 字符串头多了“\000"并覆盖掉了第一个‘A’*/
我觉得是第二个strcat在操作数据段时出的问题,于是将上面的声明改为ps声明在mm之前,如下
char ps[33 + 5] = "(初始赋给4个字符)”
char mm[16] = "(初始赋给14个字符)“
问题就不再出现了。但我现在还不知道是什么问题?大家觉得是什么问题?
先去吃饭现。。。。。