二维字符数组按行输出连续到下一行的解决办法

二维字符数组按行输出连续到下一行的解决办法

二维字符数组在按行进行输出的时候,会由于越界导致输出连续到下一行。如:
二维数组按行输出演示
同时出现了后续乱码问题,这个后面说。
如图,将"37"都copy到SNR[6]和SNR[7]中,输出SNR[6]的时候,会连续输出两个"37",先怀疑了输入输出重复的情况,重新设置然后测试:
设置不相同的字符
看到并不是输入输出重复的问题。考虑二维数组的排列性质:
二维数组
数组的地址是从首地址之后连续排列的,即如:a[0][1]后的下一个地址即为a[1][0]。

故考虑越界的问题,由于memcpy进行字符串copy的时候,可能会在字符串后面补’\0’,作为结束符,故第二维的长度不满足加上’\0’字符后的行长度。将第二维长度扩大,变为3测试:

扩大二维长度后
可以看到,第二维长度扩大为3之后,输出正常了,乱码也不见了,猜测是由于输出字符串没有’\0’结束符,所以输出后续非正常码。

阿猪米德
2019.05.09于湖北武汉

猜你喜欢

转载自blog.csdn.net/qq784791086/article/details/90019727
今日推荐