下面是一个面C语言面试题,该程序有一些错误,麻烦诸位找出来!?

如题所述

strlen计算字符串长度,不包括结尾默认的\0。hello,world本来10个字节,加个\0,就11个字节。但是malloc获得的大小只有10个字节。所以顺序交换过来就装不下了。要装下他也需要11个字节。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-21
dest = (char * ) malloc(len+1);
strlen 计算的是字符串的长度,没有加最后 ‘/0’的长度追问

能说详细点吗?

追答

上次计算字符串长度错了 strlen计算字符串长度,不包括结尾默认的\0。hello,world本来11个字节,加个\0,就12个字节。但是malloc获得的大小只有11个字节。所以顺序交换过来就装不下了。要装下他也需要12个字节。
src指向的字符串是这么存储的 hello world\0 占用12个字节 ,strlen函数计算字符串的长度时,不计算最后的\0字符,结果是11

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网