关于字符串数组的强制类型转换

zhouliang0806 2011-10-19 08:12:48
比如我定义了1个char[100]的字符串数组,
里面的内容是1个struct类型强制转换过去的。比如
struct A
{
int id;
int num;
float goal;
}

那么字符串数组的char[1]-char[4]里面存的是int id的值,用什么方法把这个int型给解析出来。
...全文
291 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
每天求十道题 2012-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keiy 的回复:]

那就用我第2种方法,直接内存取值
最前面是整形(这个必须的)
p指向你的数组,不管什么类型都可以


char p[100];
int b;
b=*(int*)p; //这个b就是你结构中第一个整形的值
printf("%d\n",b);
[/Quote]


char s[]="1,2,3,4,5,6,6,78,";
int a[8];
int n;

scanf(s, "%d", &n);
a = *(int*)s;

...


error: incompatible types when assigning to type 'int[8]' from type 'int'
zhouliang0806 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keiy 的回复:]
那就用我第2种方法,直接内存取值
最前面是整形(这个必须的)
p指向你的数组,不管什么类型都可以


char p[100];
int b;
b=*(int*)p; //这个b就是你结构中第一个整形的值
printf("%d\n",b);
[/Quote]
给力,这种可以。
柯本 2011-10-19
  • 打赏
  • 举报
回复
那就用我第2种方法,直接内存取值
最前面是整形(这个必须的)
p指向你的数组,不管什么类型都可以


char p[100];
int b;
b=*(int*)p; //这个b就是你结构中第一个整形的值
printf("%d\n",b);
zhouliang0806 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 keiy 的回复:]
最后错了,应该是
int b;
b=*(int*)p;
printf("%d\n",b);
[/Quote]
不是,我的意思是不能再用强制转换成结构体的方法了,因为我现在遇到的情况是我知道一个结构体的前几个成员的形式,但是,整个结构体的形式不知道(意思是struct A的形式是不知道的),我想要得到前面的int型成员。
柯本 2011-10-19
  • 打赏
  • 举报
回复
最后错了,应该是
int b;
b=*(int*)p;
printf("%d\n",b);
柯本 2011-10-19
  • 打赏
  • 举报
回复
给你个参考:

#include <stdio.h>
struct A
{
int id;
int num;
float goal;
};

int main()
{
A a;
a.id=12345678;
char *p=(char *)&a; //设你的数组为m[100],那p=m;
//方法1 ,再用强制转回来
A *ap;
ap=(A *)p;
printf("%d\n",ap->id);
//方法2,直接内存取值
int b;
b=*(int*)p;
printf("%d\n",ap->id);


}

64,637

社区成员

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

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