调试程序过程中,遇到了一个问题。如下:
#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这个函数是把最后的 复制过去的,根本原因是我这个地方定义数组内存不够导致的,是这样的吗?
还请各位老师指教。谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
strcpy要求字符数组必须定义的足够大,以便容纳被复制的字符串,字符数组的长度不应小于字符串2的长度
一周热门 更多>