请问:关于字符数组,最后补零会不会造成溢出的问题。

2019-12-12 18:11发布

本帖最后由 ma_xiang 于 2019-4-2 14:38 编辑

请问:关于字符数组,最后补零会不会造成溢出的问题。
我定义一个字符数组char  a[10] = {'12345'}; char b[5] = {0x0a,0x0b,0x0c,0x0d,0x0e};
                                strcat(a,b);
这样之后strcat会在a数组后面补,请问这样是不是a的内存就溢出了,是不是需要我定义a[11]?

其次MQTT的TOPIC规定其只能是非''的元素才能正常处理,不然就断开连接,不知道我这样把a[11]作为TOPIC填到Publish()函数体里面,会不会造成异常啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
hyghyg1234
1楼-- · 2019-12-12 19:19
 精彩回答 2  元偷偷看……
nanfang2000
2楼-- · 2019-12-13 00:00
安全编程,请一定用带n的函数,比如strncat。我们公司已经完全禁止用不带n的这种字符串c函数
javenreal
3楼-- · 2019-12-13 04:33
  char b[5] = {0x0a,0x0b,0x0c,0x0d,0x0e};  这个没有以0结尾,如果把它当成字符串来使用,那么它的长度是未知的,上万字节都有可能,具体取决于内存里面实际位置的内容
wx-ta
4楼-- · 2019-12-13 10:21
以后所有的接口都是用strncat,snprintf之类的
ma_xiang
5楼-- · 2019-12-13 13:33
javenreal 发表于 2019-4-2 16:38
char b[5] = {0x0a,0x0b,0x0c,0x0d,0x0e};  这个没有以0结尾,如果把它当成字符串来使用,那么它的长度是 ...

那如果我用char b[50] = {0x0a,0x0b,0x0c,0x0d,0x0e}; 这样呢 因为b的内容是认为输入不定长的数据,存到eeprom里 我现在做的是吧B设置的足够长,然后拼到一起 这样可以么
ma_xiang
6楼-- · 2019-12-13 14:48
 精彩回答 2  元偷偷看……

一周热门 更多>