社区
C语言
帖子详情
【求助】char型数组赋值给结构体
gaupen1186
2011-11-30 04:21:59
定义了一个结构体和一个uchar型数组BUF[10],请问如何把数组内的数据赋给大小为10byte结构体呢?
需要强制类型转换吗?
就是BUF[10]内分为2+4+4的形式赋值到结构体中。
struct Meter
{
uint MeterNum; //2byte
float temperature; //4byte
float dosage; //4byte
}MeterData;
...全文
579
11
打赏
收藏
【求助】char型数组赋值给结构体
定义了一个结构体和一个uchar型数组BUF[10],请问如何把数组内的数据赋给大小为10byte结构体呢? 需要强制类型转换吗? 就是BUF[10]内分为2+4+4的形式赋值到结构体中。 structMeter { uintMeterNum; //2byte floattemperature; //4byte floatdosage; //4byte }MeterData;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gaupen1186
2011-12-02
打赏
举报
回复
[Quote=引用 5 楼 zhaoxukun 的回复:]
struct Meter
{
uint MeterNum; //2byte
float temperature; //4byte
float dosage; //4byte
}MeterData;
答案如下:
uchar BUF[10];
uint *p =(uint *)BUF;
MeterData.MeterNum = ……
[/Quote]
问题已经解决,用指针方便的很。
unsigned int *a;
float *p;
a=%BUF[0];
MeterData.MeterNum=*a;
P=&BUF[2];
MeterData.temperature=*p;
p=&BUF[6];
MeterData.dosage=*p;
相当的省事儿。
gaupen1186
2011-12-02
打赏
举报
回复
[Quote=引用 4 楼 goldbeef 的回复:]
(1)首先说明:
struct Meter
{
uint MeterNum; //2byte,不清楚uint是神马类型(好像只有UINT,而且是四字节),姑且认为有这个类型,且为两字节
float temperature; //4byte
float dosage; //4byte
}MeterData;
则按照字节对齐原理,默认情况下是4字节,则该结构体的大小是12字节,而不是10……
[/Quote]
uint就是unsigned int,keil C51常用的。
问题已经解决,用指针方便的很。
unsigned int *a;
float *p;
a=%BUF[0];
MeterData.MeterNum=*a;
P=&BUF[2];
MeterData.temperature=*p;
p=&BUF[6];
MeterData.dosage=*p;
相当的省事儿。
AnYidan
2011-11-30
打赏
举报
回复
[Quote=引用 7 楼 mougaidong 的回复:]
引用 3 楼 lanqiucoco 的回复:
引用 2 楼 ouyh12345 的回复:
调整对齐,然后memcpy
++
也可以考虑用联合
支持使用联合
[/Quote]
联合比较好
turing-complete
2011-11-30
打赏
举报
回复
[Quote=引用 3 楼 lanqiucoco 的回复:]
引用 2 楼 ouyh12345 的回复:
调整对齐,然后memcpy
++
也可以考虑用联合
[/Quote]
支持使用联合
成成规划工作室
2011-11-30
打赏
举报
回复
楼上已经正解释,对齐以后强制装换也可以。不解释
程序人生
2011-11-30
打赏
举报
回复
struct Meter
{
uint MeterNum; //2byte
float temperature; //4byte
float dosage; //4byte
}MeterData;
答案如下:
uchar BUF[10];
uint *p =(uint *)BUF;
MeterData.MeterNum = *P;
P++;
float *ptr = (float *)P;
MeterData.temperature = *P;
ptr++;
MeterData.dosage = *ptr;
goldbeef
2011-11-30
打赏
举报
回复
(1)首先说明:
struct Meter
{
uint MeterNum; //2byte,不清楚uint是神马类型(好像只有UINT,而且是四字节),姑且认为有这个类型,且为两字节
float temperature; //4byte
float dosage; //4byte
}MeterData;
则按照字节对齐原理,默认情况下是4字节,则该结构体的大小是12字节,而不是10字节。
但是 LZ可以在源程序最前面加上 #pragma pack(2) 则以2字节对齐,这时候该结构体的大小是10;
(2)加上头文件 #include <string.h>
#include <memory.h>
然后使用 memcpy(&MeterData,BUF,10);即可
lanqiucoco
2011-11-30
打赏
举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
调整对齐,然后memcpy
[/Quote]
++
也可以考虑用联合
ouyh12345
2011-11-30
打赏
举报
回复
调整对齐,然后memcpy
gaupen1186
2011-11-30
打赏
举报
回复
急急急!!!!!!。。。
c语言给自定义函数
赋值
,[
求助
]用自定义的函数给
结构体
中的float类
型
变量
赋值
编译 都通过了 运行总是出错...
在这里用的一个结构
数组
,结构里面有double类
型
的成分,TC不能正确识别和处理,因此会导致上述问题。*/ #include #define NUM 4 struct entry { int inum; /* 商品编号 */ int pc; /* 件数 */ double price;/* 价钱...
c语言struct tm*lt,
求助
,C语言
结构体
数组
的
赋值
满意答案guiynby90322018.07.10采纳率:56%等级:11已帮助:13955人#include#include#include#include#defineN34...
char
name;intmscore;//数学成绩intescore;//英语成绩intcscore;//语文成绩}stu[N];voidInput(st...
buffer与struct的转换
buffer就是一系列的01,对于程序员来说一点用处都没有,而struct是C程序员的一把利器之一,之所以是利器,因为可以利用struct直接操纵buffer,比如拿到一个...unsigned
char
dest[6]; unsigned
char
src[6]; unsign
c语言利用
结构体
求平均值,
求助
求助
~~一道关于
结构体
赋值
,求平均值,最大值的综合性题目~~...
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #define n 5struct ...
char
name[20];int score1;int score2;int score3;};struct student stu[n];main(){int i,t=0;float ave[n],max;printf("请输入各个...
c语言如何给指针
数组
动态
赋值
,
求助
,关于动态分配
结构体
数组
后,指针相互
赋值
的问题,有图有JB...
#include #include struct Student {
char
name[10]; int age; float score; }; void inputStudent(struct Student ** point, int nTh); // 输入第 nTh 个学生信息函数 void outputStudent(struct Student ** point,...
C语言
69,366
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章