找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1358|回复: 5
收起左侧

C语言数组拷贝问题

[复制链接]
ID:510170 发表于 2021-4-17 11:10 | 显示全部楼层 |阅读模式
最近在搞id卡门禁系统。想把读取的卡号存到单片机内存里面,遇到了一些问题,第一个就是存储超过256字节时会卡死,跳不出循环,第二个就是串口输出超过256是,屏幕无输出,这个倒是不关键,改成128就没有问题了。因为我串口只是用来监控用的,并不需要一次发超过64个字节的数据,关键就是数组copy的问题,
        //这里需要将所有的新信息存至缓存中,然后发送至后台软件
                                                        sjbuf[0] = idbuf[1];
                                                        sjbuf[1] = idbuf[2];
                                                        sjbuf[2] = idbuf[3];
                                                        sjbuf[3] = idbuf[15];
                                                        
                                                        for(i=0; i<15; i++)        TX1_write2buff(idbuf[ i]);
                                                        
                                                        for(i=0; i<4; i++)        TX1_write2buff(sjbuf[ i]);

我将idbuf的内容拷到sjbuf里面去,显示的内容全部为a5
03 06 00 00 02 0D 06 08 08 05 36 00 2D 68 85 //idbuf里面的内容
A5 A5 A5 A5  //sjbuf里面的内容。

我开始以为是内存大小的问题,后来用串口输出内容后发现,和内存无关,而是数组没有拷贝过去。不清楚问题出在哪里,程序没有报错,请大神们帮忙看看,谢谢了。

回复

使用道具 举报

ID:451718 发表于 2021-4-17 15:54 | 显示全部楼层
#include <string.h>
memcpy(sjbuf,idbuf,sizeof(idbuf));
回复

使用道具 举报

ID:57657 发表于 2021-4-17 17:43 | 显示全部楼层
数组越界,idbuf只有15字节,因此 [] 里的值应为 0~14
回复

使用道具 举报

ID:884843 发表于 2021-4-17 18:28 | 显示全部楼层
指针指向了未知内存区域
回复

使用道具 举报

ID:907466 发表于 2021-4-17 19:09 | 显示全部楼层
数组容量的问题
回复

使用道具 举报

ID:510170 发表于 2021-4-18 17:36 | 显示全部楼层
谢谢各位大神解答,问题解决了。还是内存的问题。编译的时候内存模式选small就行了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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