标题:代码运行问题
只看楼主
m564522634
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2010-9-1
结帖率:60%
已结贴  问题点数:7 回复次数:8 
代码运行问题
#include<stdio.h>
#include <string.h>
#define POWER_RECORD_SEND_COUNT 10

typedef unsigned short  WORD;

typedef struct powerRecord
{
    WORD power;//DWORD power;//Johnson--120216
    WORD time;
}PowerRecord;

PowerRecord  rcArray[POWER_RECORD_SEND_COUNT]=
{
             {0x0001,0x0002},
             {0x0001,0x0002},  
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},
             {0x0001,0x0002},            
};
unsigned char data[40];
int main(void)
{
   unsigned char i=0;
  memcpy(data,&rcArray,40);
  if(data[0]==0x00)
  printf("this is test right");
  else
  printf("this is test error");
  getchar();                                         
  return 0;  
}
为什么打印出来的是this is test error, memcpy为什么会出错。复制过去data【0】应该是0x00吧
搜索更多相关主题的帖子: include power 
2013-11-17 19:35
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
memcpy(data,&rcArray,40);
改成
memcpy(data,rcArray,40); 试试?

我行我乐
我的博客:
http://blog.yuccn. net
2013-11-17 20:05
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:0 
应该把data[1]输出看看,貌似是大端字节序和小端字节序顺序的问题吧

好好学习,天天想上
2013-11-17 20:53
m564522634
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2010-9-1
得分:0 
打印出来是0
2013-11-17 21:09
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:0 
回复 4楼 m564522634
那data[0]应该就是0x01了

好好学习,天天想上
2013-11-17 21:21
流年!
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:107
注 册:2013-11-7
得分:0 
PowerRecord这个占4字节, WORD power; WORD time;各占2字节,拷贝到data是char类型,所以data【0】,data【1】存WORD power就这样顺序排下去
2013-11-18 10:12
jsyjzz
Rank: 2
等 级:论坛游民
帖 子:29
专家分:73
注 册:2013-11-8
得分:0 
为什么data[0]是等于0呢,取第一个字节应该是0x0001,memcpy(data,&rcArray,40);
改成memcpy(data,rcArray,40);
2013-11-18 16:59
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:7 
楼主机器主机字节序是小端的,0x0001在内存里是01 00这样的,要是大端的就是00 01,所以楼主给我分吧。

好好学习,天天想上
2013-11-18 19:59
m564522634
Rank: 2
等 级:论坛游民
帖 子:34
专家分:16
注 册:2010-9-1
得分:0 
楼上说的不错,是小端格式了谢谢了给分了
2013-11-18 21:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-423683-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.649650 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved