标题: C语言数组拷贝问题 [打印本页]

作者: ttmax3    时间: 2021-4-17 11:10
标题: C语言数组拷贝问题
最近在搞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里面的内容。

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


作者: robinsonlin    时间: 2021-4-17 15:54
#include <string.h>
memcpy(sjbuf,idbuf,sizeof(idbuf));
作者: npn    时间: 2021-4-17 17:43
数组越界,idbuf只有15字节,因此 [] 里的值应为 0~14
作者: zhizhuoggg    时间: 2021-4-17 18:28
指针指向了未知内存区域
作者: icoisini    时间: 2021-4-17 19:09
数组容量的问题
作者: ttmax3    时间: 2021-4-18 17:36
谢谢各位大神解答,问题解决了。还是内存的问题。编译的时候内存模式选small就行了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1