问个C语言上的问题

2019-08-21 12:34发布

调试程序过程中,遇到了一个问题。如下:
#define  DEFAULT_SE          "000000 "   //有7个字符



char SerialNum[7];  //定义一个数组


strcpy(SerialNum , DEFAULT_SE);  //复制内存中的数据


i =strlen(DEFAULT_SE);
j=strlen(SerialNum);


结果打印出来的:
i=7
j>7(j是一个大于7的数)


我的疑问不确定,大家帮我分析下:
1、宏定义DEFAULT_SE虽然是7个字符,但是后面编译器自动加了一个 吗?,那实际上是不是有8个字符长度?
2、由于SerialNum 的定义只有七个字节宽度,导致strcpy(SerialNum, DEFAULT_SE)没有将复制过去,也就是SerialNum结尾没有,导致计算得j>7呢?


另外,看了一下百度百科对C语言中strcpy的介绍:
C语言标准库函数strcpy,把从src地址开始且含有''结束符的字符串复制到以dest开始的地址空间
也就是说strcpy这个函数是把最后的复制过去的,根本原因是我这个地方定义数组内存不够导致的,是这样的吗?


还请各位老师指教。谢谢。





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。