免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2522 | 回复: 5
打印 上一主题 下一主题

请教: 如何将接收的buffer拷贝到结构体中? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-04 13:42 |只看该作者 |倒序浏览
如何将接收的buffer内容拷贝到结构体中
struct aa
{
                char  morepkt;
                char  pktype;                 
           char  unitend;
                 char  save;                    
                 short sequence;               
                short length;         
                 long  msgtype;         
};

论坛徽章:
0
2 [报告]
发表于 2008-05-04 13:43 |只看该作者
memcpy?

论坛徽章:
0
3 [报告]
发表于 2008-05-04 13:50 |只看该作者
memset(&aa, 0x00, sizeof(struct aa));

        memset(str,0x00,sizeof(str));
        sprintf(str, "%s", "12345678     999");
        memcpy(&aa, str, sizeof(str));

这样可以吗?
为什么打出来的不对呢?
printf("[%d]\n", aa.sequence);

[ 本帖最后由 bianfz0311 于 2008-5-4 14:37 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-05-04 16:07 |只看该作者
原帖由 bianfz0311 于 2008-5-4 13:50 发表
memset(&aa, 0x00, sizeof(struct aa));

        memset(str,0x00,sizeof(str));
(        sprintfstr, "%s", "12345678     999");
        memcpy(&aa, str, sizeof(str));

这样可以吗?
为什么打出来 ...


呕,卖疙瘩。
1、aa并不是一个变量
2、把str复制到aa中并不是不可以,不过以你现在的水平这么写就有些太高深了。

[ 本帖最后由 Sorehead 于 2008-5-5 15:45 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-05-04 16:25 |只看该作者
感觉楼主有些概念没搞清

不知道下面这段代码能否让楼主搞清一些概念
  1. #include <stdio.h>

  2. struct aa
  3. {
  4.         char  morepkt;
  5.         char  pktype;                 
  6.         char  unitend;
  7.         char  save;                    
  8.         short sequence;               
  9.         short length;         
  10.         long  msgtype;         
  11. };

  12. int main(void)
  13. {
  14.         struct aa val;
  15.         char str[256];

  16.         memset(&val, 0x00, sizeof(struct aa));
  17.         memset(str,0x00,sizeof(str));
  18. //        sprintf(str, "%s", "12345678     999");
  19.         str[0] = 'a';
  20.         str[1] = 'b';
  21.         str[2] = 'c';
  22.         str[3] = 'd';
  23.         str[4] = (short)0x0102;
  24.         str[6] = (short)0x0304;
  25.         str[8] = (long)0x05060708;
  26.         memcpy(&val, str, sizeof(struct aa));
  27.         printf("[%d]\n", val.sequence);
  28. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2008-05-05 11:35 |只看该作者
谢谢zhuhefang2006 指教,我还在学习中呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP