社区
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类型?
...全文
316
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
打赏
举报
回复
根据通信协议,一个字节字节地拷贝。恢复时也一样。
将结构体指针
存入
char
*
中
typedef
struct
{ int len;
char
*ptr; }SDM_OCTET_STRING; 因为SDM_OCTET_STRING结构体内存有指针,因此其内存地址不一定是连续的,不能直接将整个结构体memcpy至指定的数组指针
中
。因此需要像以下做法去复制: typedef
struct
{ int len;
char
*...
c 语言结构体
类型转换
,C 语言编程 — 结构体的
数据
类型转换
目录数组类型强制
类型转换
为结构体先看一个例子:#include int main(void) {unsigned
char
arr[] = "0123456789abcdefghijk";
struct
A {int a;
char
b;
char
c;
char
d;int e;} p, *pp;
struct
B {int a;
char
b;int ...
strcut结构体和
char
型数组的相互转化
原文:https://blog.csdn.net/mercy_ps/article/details/82226566 strcut结构体和
char
型数组的相互转化 2018年08月30日 19:24:01Panix2n_n阅读数:516 针对内存连续的结构体,把一整段内存拷贝到
char
数组对应的内存
中
。考虑4字节对齐!
struct
Test { ...
结构体自动化转为
char
数组的实现
结构体自动化转换为
char
数组这个需求,来自于一个最近开发的一个项目,在项目开发过程
中
遇到一个小问题,需要将各种结构体拷贝到
char
数组
中
,这对于一个简单的结构体来说是很简单的事情,比如下面这个只有整形字段的结构体:
struct
A { int a; int b; };
char
buf[100]; A a = {1,2}; memcpy(buf, &a, sizeof(A)); 一句memcpy就能将结构体a拷贝到
char
数组
中
去了,直接通过memcpy拷...
C 语言编程 — 结构体的
数据
类型转换
目录 文章目录目录数组类型强制
类型转换
为结构体结构体之间的强制
类型转换
数组类型强制
类型转换
为结构体 先看一个例子: #include <stdio.h> int main(void) { unsigned
char
arr[] = "0123456789abcdefghijk";
struct
A { int a;
char
b;
char
c;
char
d; in
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章