找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机C语言strcat函数复制字符串的问题

查看数: 2304 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-14 20:20

正文摘要:

编程大佬们,遇到一个困惑的问题,望解答 用strcat函数复制电压的ASCII,可是一直复制失败,是空的。

回复

ID:832450 发表于 2021-12-16 08:01
wojiaoguogai 发表于 2021-12-15 17:51
sprintf_s(tmp_buf, "%s","02");
        strcat_s(tmp_buf, "03");
        strcat_s(tmp_buf, "3283");

好,谢谢解答,我去试试
ID:415064 发表于 2021-12-15 18:01
也有可能是你的整型中出现ascii的00,这个在字符串中代表\0
ID:415064 发表于 2021-12-15 17:51
        sprintf_s(tmp_buf, "%s","02");
        strcat_s(tmp_buf, "03");
        strcat_s(tmp_buf, "3283");
        strcat_s(tmp_buf, "12345678"); 这个是没有问题的,问题在你的那个电压转换哪里
ID:750420 发表于 2021-12-15 16:58
18936674086 发表于 2021-12-15 16:10
非常感谢回答,我也不是很清楚究竟原因,我现在在这个数组又添加了20位数据,依然没有问题,可就是 ...

直接将strcat(temp_buf,"3283")实验一下
ID:832450 发表于 2021-12-15 16:10
Y_G_G 发表于 2021-12-15 13:50
要不是楼上说到,我都没有看到,一组电压数据怎么会用到长度100的数组呢?在我看来,这是一个很恐怖的长度
...

非常感谢回答,我也不是很清楚究竟原因,我现在在这个数组又添加了20位数据,依然没有问题,可就是独独缺失了4位数据,奇了怪了,我再研究研究
ID:401564 发表于 2021-12-15 13:50
18936674086 发表于 2021-12-15 07:44
我用的STC8F单片机呢,搞不懂,就这一组ASCII没了,其他组都好好的,难搞

要不是楼上说到,我都没有看到,一组电压数据怎么会用到长度100的数组呢?在我看来,这是一个很恐怖的长度
如果要这么长的数组,先在数组前加限定为xdata,不然的话,用的还是8051原本的RAM
STC8F多出来的SRAM是在xdata区的
如果还是不行,那就按我说的,用结构吧
ID:832450 发表于 2021-12-15 07:44
Hephaestus 发表于 2021-12-14 22:00
你这个ONENET_DATA_ASC函数里面一口气定义了112 bytes变量,51应该最多120 byte全局变量+局部变量,链接能 ...

我用的STC8F单片机呢,搞不懂,就这一组ASCII没了,其他组都好好的,难搞
ID:883242 发表于 2021-12-14 22:00
你这个ONENET_DATA_ASC函数里面一口气定义了112 bytes变量,51应该最多120 byte全局变量+局部变量,链接能通过?
ID:832450 发表于 2021-12-14 21:54
Y_G_G 发表于 2021-12-14 21:30
要把准备复制的数组先转换成ASCII再进行复制
如果数组中有0x00的话,函数就会结束了,因为字符串是以'\0'结 ...

这个我是知道的,我复制了好多组ASCII值,就单单这个电压不行,哭了,但是电压已经成功转为ASCII了,太难了
ID:401564 发表于 2021-12-14 21:30
要把准备复制的数组先转换成ASCII再进行复制
如果数组中有0x00的话,函数就会结束了,因为字符串是以'\0'结束的
其它函数也会用到这个值的,所以,一般都是先转换成ASCII再处理
如果不是这个原理话,那我就不知道了
一般数组之间传递,我都是用结构
当你定义了结构a和结构b之后,就可以像变量一样的:a=b

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表