结构体含有指针和指针指向的数据长度,怎么初始化

heap-overflow 2014-08-31 04:25:29


如图,这是一段内存的数据,现在我要用定义一个结构体来解析这段数据。但是问题是,里面有name长度是可变的,长度存储在namelength里面。我定义了下面的结构体,但是有问题,应该如何定义来解析这段数据呢?谢谢各位

typedef struct HEAD
{
unsigned int regf;
unsigned int namelength;
unsigned char* name;
unsigned char head;
}HEAD,*PHEAD;

[/size]
...全文
347 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
heap-overflow 2014-09-02
  • 打赏
  • 举报
回复
引用 2 楼 truelance 的回复:
变长的字段只能有一个,而且必须放在最后 typedef struct HEAD { unsigned int regf; unsigned char head; unsigned int namelength; unsigned char name[1]; }HEAD,*PHEAD;
我也一直这么觉得,只是不太相信自己,可以结贴了,谢谢
猪神川 2014-09-01
  • 打赏
  • 举报
回复
能不能得到namelength的数据。能得到的话用下面的结构体 typedef struct HEAD { unsigned int regf; unsigned int namelength; unsigned char name[0]; }HEAD,*PHEAD; 给这个结构体分配地址空间的时候, PHEAD *p = (PHEAD)calloc(sizeof(struct HEAD) + namelength, 1); 你就可以通过name这个指针去访问后面分配的数据,name将指向name后面数组的首地址。这样就实现了可变长的访问。
图灵狗 2014-09-01
  • 打赏
  • 举报
回复
中间有变长数据的话,只有一个数据一个数据的解析了,不要期望用结构体直接映射。
引用 楼主 braveheart2010 的回复:
如图,这是一段内存的数据,现在我要用定义一个结构体来解析这段数据。但是问题是,里面有name长度是可变的,长度存储在namelength里面。我定义了下面的结构体,但是有问题,应该如何定义来解析这段数据呢?谢谢各位 typedef struct HEAD { unsigned int regf; unsigned int namelength; unsigned char* name; unsigned char head; }HEAD,*PHEAD; [/size]
熊熊大叔 2014-09-01
  • 打赏
  • 举报
回复
变长的字段只能有一个,而且必须放在最后 typedef struct HEAD { unsigned int regf; unsigned char head; unsigned int namelength; unsigned char name[1]; }HEAD,*PHEAD;
Cnwanglin 2014-09-01
  • 打赏
  • 举报
回复
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct HEAD { unsigned int regf; unsigned int namelength; unsigned char* name; unsigned char head; }HEAD,*PHEAD; int main(int argc, _TCHAR* argv[]) { HEAD h; char tmp[1024] = {0}; const char* p = tmp; printf("input name:\n"); scanf("%s", tmp); h.namelength = strlen(p); h.name = (unsigned char*)p; printf("name is : %s , name lenth is : %d \n", h.name, h.namelength); system("pause"); return 0; }
707wk 2014-08-31
  • 打赏
  • 举报
回复
结构体里不是存储额长度了吗,没听懂你意思

69,382

社区成员

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

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