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

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条回答
lmf159
1楼-- · 2019-12-13 19:37
char b[50] = {0x0a,0x0b,0x0c,0x0d,0x0e}
你这个就不是字符串,为什么要用串复制函数呢?
如果你一定要用串复制函数,那么将 b 以0x0结尾,否则就呵呵呵呵
728196
2楼-- · 2019-12-13 23:35
str 是字符串  你去操作 字符数组 你说有问题吗?
javenreal
3楼-- · 2019-12-14 05:26
ma_xiang 发表于 2019-4-3 08:06
那如果我用char b[50] = {0x0a,0x0b,0x0c,0x0d,0x0e}; 这样呢 因为b的内容是认为输入不定长的数据,存到e ...

最后面要有一个0,改成这样: char b[6] = {0x0a,0x0b,0x0c,0x0d,0x0e, 0};
hyghyg1234
4楼-- · 2019-12-14 08:25
ma_xiang 发表于 2019-4-3 08:06
谢谢 那我把A和b设置的足够长char b[50] = {0x0a,0x0b,0x0c,0x0d,0x0e}; ,然后strcat这样可以么 ...

楼上的都已经说到了,str这一类的函数都是找字符串的结束符的。数组就不要用strcat来复制了,用的话就加个结束符。
BSMGood
5楼-- · 2019-12-14 13:47
 精彩回答 2  元偷偷看……

一周热门 更多>