找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1460|回复: 6
打印 上一主题 下一主题
收起左侧

C语言赋值数组某一位问题

[复制链接]
跳转到指定楼层
楼主
ID:479134 发表于 2022-9-29 22:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned char UDM[8]={0x5A,0xA5,0x05,0x82,0x50,0x00,0x00,0x00};
unsigned char save_buf[44];     //存放的是EEPROM数据

如何将UDM[5] 每次+5    //存放的是地址
将UDM[6] = save_buf[0];    UDM[7] = save_buf[1];

这样一次赋值下去  将save_buff[44]个数值全部赋值完毕

我用的是
        for(i=0;i<44;i++)                                                        
        {
                UDM[5] = UDM[5]+i*5;
                UDM[6] = save_buf[ i];
                UDM[7] = save_buf[i+1];
                PrintArray4(UDM, 8);                   //将数发送给串口屏               
        }

得到的数据是不正确地  还望各位能再指导一下 是哪里错了,或者有没有更好的方法,感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:629502 发表于 2022-9-30 08:30 | 只看该作者
是要把save_buf[44]每两个赋值给UDM[6]和UDM[7]吧,你这个明显i=43时数组越界了
回复

使用道具 举报

板凳
ID:123289 发表于 2022-9-30 08:31 | 只看该作者
把得到的显示出示看看。
回复

使用道具 举报

地板
ID:592807 发表于 2022-9-30 08:58 | 只看该作者
UDM[5] = UDM[5]+i*5;这不是累加吗?
i = 0;       UNM[i] = 0 + 0;
i = 1;       UNM[i] = 0 + 5;
i = 2;       UNM[i] = 5 + 10;
i = 3;       UNM[i] = 15 + 15;
i = 4;       UNM[i] = 35 + 20;
回复

使用道具 举报

5#
ID:146878 发表于 2022-9-30 10:41 | 只看该作者
UDM[5] = UDM[5]+i*5;不是每次加5,UDM[5] +=5;才是。另外i>42时数组溢出。
回复

使用道具 举报

6#
ID:59202 发表于 2022-9-30 21:43 | 只看该作者
本帖最后由 xxxevery 于 2022-10-1 21:26 编辑

楼主是不是想发这样的数据:{0x5A,0xA5,0x05,0x82,0x50,0x00,save_buf[0],save_buf[1]};
                                       {0x5A,0xA5,0x05,0x82,0x50,0x05,save_buf[2],save_buf[3]};
                                       {0x5A,0xA5,0x05,0x82,0x50,0x0A,save_buf[4],save_buf[5]};
                                       ......
那程序我觉得这样改
for(i=0;i<22;i++)                                                        
        {
                UDM[5] =i*5;
                UDM[6] = save_buf[ i*2];
                UDM[7] = save_buf[i*2+1];
                PrintArray4(UDM, 8);                   //将数发送给串口屏               
        }
请参考
回复

使用道具 举报

7#
ID:161164 发表于 2022-9-30 21:47 | 只看该作者
  1.         for(i=0;i<22;i++)                                                        
  2.         {
  3.                 UDM[5] = UDM[5]+i*5;
  4.                 UDM[6] = save_buf[ i*2];
  5.                 UDM[7] = save_buf[(i*2)+1];
  6.                 PrintArray4(UDM, 8);                   //将数发送给串口屏               
  7.         }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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