如何将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 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
根据通信协议,一个字节字节地拷贝。恢复时也一样。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧