如何给已经定义好的结构体,重新增加几个(个数动态变化)变量,以便程序的其他地方给这几个变量赋值,

hacklinshell 2016-05-18 09:03:57
例如,我已经定义好了结构体
typedef struct _json_context_t{
int wifi_connected;
int wifi_strength;
char wifi_ssid[32];
char wifi_ip[16];
char wifi_mac[16];
int gprs_connected;
char phonenumber[12];
char IMEI[20];
}json_context_t;


然后我从其他服务端解析到了3个(个数动态的)变量,
int dht11_temp_data;
int dht11_hum_data;
int gp2y101_value;
如何动态的将这3个变量增加到原来的结构体中,
...全文
331 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2016-05-19
  • 打赏
  • 举报
回复
你就算加上也没有用,因为使用者不知道。 在很多使用,我们需要动态的使用一个数据结构。 此时需要使用一个标识来表示这个结构的额外数据。 使用 flag and union 来标识 数据。 在结构体开始定义一个 size 来表示这个结构数据的大小。 你可以看到 Windows API 很多传入和传出结构都是有 Size 的。 就是他的数据就像你这样的。
struct
{
int size;
int flag;
union
{
struct 
{} _1;
struct
{
} _2;
}
}
ghx287524027 2016-05-19
  • 打赏
  • 举报
回复
改不了~~~
赵4老师 2016-05-19
  • 打赏
  • 举报
回复
realloc ?
小灸舞 版主 2016-05-19
  • 打赏
  • 举报
回复
在结构体中放个void *指针?
有3个int的时候就转换成int *,并且分配3*sizeof(int)的空间
如果是double,那就转成double *
xigua1102 2016-05-19
  • 打赏
  • 举报
回复
结构体不能动态修改
paschen 2016-05-19
  • 打赏
  • 举报
回复
结构体的定义是在编译前,编译好的程序运行时全是二进制数据了
lm_whales 2016-05-19
  • 打赏
  • 举报
回复
1)修改原来的代码 2)传递结构体指针并强制转换

69,371

社区成员

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

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