c++结构体取值,字段名称保存在变量中,根据该变量读取结构体成员值

a2755614350 2014-09-17 09:14:02
结构体
struct _tmp
{
int a;
char b[5];
cahr c[5];
};


_tmp tmp;
tmp.a=1;
strcpy(tmp.b,"333");

char test[10] = {0};
strcpy( test,"tmp.b" );
怎么根据 test 读取结构体 tmp.b 的值呢
...全文
1043 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a2755614350 2014-10-08
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
if (0==strcmp(name,"name1")) {
 s=name1;
} else if (0==strcmp(name,"name2")) {
 s=name2;
} else if (0==strcmp(name,"name3")) {
 s=name3;
} else if (0==strcmp(name,"name4")) {
 s=name4;
} else {
 printf("error name:[%s]!\n",name);
}
结构体有近200个成员变量呢
a2755614350 2014-10-08
  • 打赏
  • 举报
回复
多谢大家帮忙, 前段时间出差了 忘记结贴 改用c++的 map容器了
引用 3 楼 baijiaheizhiganmao 的回复:
[quote=引用 2 楼 OrthocenterChocolate 的回复:] 你这句错了吧?strcpy( test,"tmp.b" );加双引号干嘛呢?strcpy( test,tmp.b );
就是就是[/quote] 这个不是写错了 我的意思是 test中保存的是结构体成员的名字,根据test变量中保存的名字读取结构体的值。
赵4老师 2014-10-08
  • 打赏
  • 举报
回复
200个不算多。
赵4老师 2014-09-18
  • 打赏
  • 举报
回复
if (0==strcmp(name,"name1")) {
 s=name1;
} else if (0==strcmp(name,"name2")) {
 s=name2;
} else if (0==strcmp(name,"name3")) {
 s=name3;
} else if (0==strcmp(name,"name4")) {
 s=name4;
} else {
 printf("error name:[%s]!\n",name);
}
忘世麒麟 2014-09-18
  • 打赏
  • 举报
回复
引用 2 楼 OrthocenterChocolate 的回复:
你这句错了吧?strcpy( test,"tmp.b" );加双引号干嘛呢?strcpy( test,tmp.b );
就是就是
Kenney_Qin 2014-09-17
  • 打赏
  • 举报
回复
你这句错了吧?strcpy( test,"tmp.b" );加双引号干嘛呢?strcpy( test,tmp.b );
阿呆_ 2014-09-17
  • 打赏
  • 举报
回复
c/c++可不是解释执行的语言。编译后结构体中并不存在什么名字。 想实现目的那么需要你手工建立一个名字字符串和结构中偏移量的对照表然后查表从名字获取偏移量再根据偏移量去读取具体数据。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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