社区
C语言
帖子详情
如何将struct中数据存入char[]中(类型转换)
tianyxy
2004-10-10 03:04:51
因为串口通信的时候标准参数是char*,所以必须做struct ->char*的转换
例如:
struct stu{
char c;
char c[20];
unsigned x;
int y;
}
如何存入char buff[100]中,并且如何转换回struct类型?
...全文
365
12
打赏
收藏
如何将struct中数据存入char[]中(类型转换)
因为串口通信的时候标准参数是char*,所以必须做struct ->char*的转换 例如: struct stu{ char c; char c[20]; unsigned x; int y; } 如何存入char buff[100]中,并且如何转换回struct类型?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Leaveye
2004-10-10
打赏
举报
回复
如果只是发送,那可以定义一个只读的指针:
const union bytesunit * puSend;
Leaveye
2004-10-10
打赏
举报
回复
使用时,可以定义一个指针:
union bytesunit * puSend;
对于某一个 struct stu 变量 stu_struct,先让指针指向它:
puSend = (union bytesunit *) & stu_struct;
之后就可以用指针通过操作 puSend->Bytes[] 来操作 stu_struct 了。
Leaveye
2004-10-10
打赏
举报
回复
struct stu{
char c;
char c[20];
unsigned x;
int y;
}
union bytesunit {
struct stu struct_stu;
char Bytes[25];
}
25 是计算出的 sizeof(struct stu)
这样就可以把结构当字节串用了。
cxjddd
2004-10-10
打赏
举报
回复
当成一个 buffer,直接送就是了。不过小心字节序 >_<
tianyxy
2004-10-10
打赏
举报
回复
多谢 啸狮 晨星 老狼!!!
roarlion
2004-10-10
打赏
举报
回复
/*反变换*/
get(char s[])
{
struct stu e;
char *p=s; /*p指向数组首地址*/
int *y=(int *)(p+23); /* 定位y所对应数据的起始地址*/
unsigned *x=(unsigned *)(p+21); /* 定位x所对应数据的起始地址*/
e.c=*p; /*分别得到各成员的值*/
strcpy(e.str,p+1);
e.x=*x;
e.y=*y;
printf("%c\n%s\n%d\n%d",e.c,e.str,e.x,e.y); /*输出结果*/
}
tianyxy
2004-10-10
打赏
举报
回复
多谢各位 了 让俺赶紧试一试 哈哈
Hellboy
2004-10-10
打赏
举报
回复
struct stu stuSend;
如果每次只发送一个结构体,可以这样做。
char * pSend;
pSend = (char *) &stuSend;
Send(psend);
接收了以后
定义一个 struct stu * pstuSend;
pstuSend = (struct stu *) pSend;
。。。。。。。。
如果是要发送多个结构体
char buf[100];
memcpy(buf,&stuSend,sizeof(stuSend));
Send(buf);
接收
memcpy(&stuSend,buf,sizeof(stuSend));
roarlion
2004-10-10
打赏
举报
回复
struct stu{
char c;
char c[20];
unsigned x;
int y;
}
main()
{
struct stu e={'r',"hello",4,5}; /*结构体初始化*/
char s[30]; /*最后所得的结果*/
char *p;
int i;
p=(char *)&e; /*将结构体变量的地址给指针p */
for(i=0;i<sizeof(e);i++,p++) s[i]=*p; /* 逐个字节复制 */
}
tianyxy
2004-10-10
打赏
举报
回复
请问晨星:如何一个字节一个字节的拷贝,取出struct中的单个字节怎么做?
谢谢!
winco
2004-10-10
打赏
举报
回复
在buff中间加入特殊字符分隔,比如'#'
然后要做的工作就是把你的内容都存进去,取出来只不过是个逆过程而已
晨星
2004-10-10
打赏
举报
回复
根据通信协议,一个字节字节地拷贝。恢复时也一样。
matlab无法从double转换成cell_matlab
中
double、
char
和cell的互转
首先我们要读入txt文档,读入txt文档的函数为:A=importdata(filename.txt),读入之后才可以对文档进行处理,读入之后一般会有data和textdata两个字段,你需要那个就直接A.data或A.textdata获取。获取完之后就存在这转换问题了,比如我们最终要的格式为:可以看出有些事
char
字符型,有的是矩阵型所以接下来就是转换问题,前提是要弄清楚你要的是什么类型,有的是...
matlab
中
double、
char
和cell的互转
首先我们要读入txt文档,读入txt文档的函数为:A=importdata(filename.txt),读入之后才可以对文档进行处理,读入之后一般会有data和textdata两个字段,你需要那个就直接A.data或A.textdata获取。 获取完之后就存在这转换问题了,比如我们最终要的格式为: 可以看出有些事
char
字符型,有的是矩阵型 所以接下来就是转换问题,前提是要弄清楚你要的是什么类型...
Union和
struct
以及占据内存问题
主要讲
struct
和union以及字节对齐
完整且详细的C语言教程,从入门到精通(2.1)--C语言关键字(C89标准下的
数据
类型、IEEE 754 标准、大小端、pragma pack)
数据
类型(12个):
char
short int long float double signed unsigned
struct
union enum void
[转]union和
struct
辨析
struct
:结构体 union:共同体或联合体
struct
定义:
struct
student {
char
mark; long num; float score; }; 关于
struct
的内存结构,将就会像下图所示这样(在x86机器上演示): sizeof(
struct
student)的值为12bytes。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章