标题:
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