首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char *强制转换成结构体遇到的有关问题请问

2012-09-12 
char *强制转换成结构体遇到的问题请教。[codeC/C++][/code]#include stdio.h#include string.h#inclu

char *强制转换成结构体遇到的问题请教。
[code=C/C++][/code]#include "stdio.h"
#include "string.h"
#include "stdlib.h"

#pragma pack(1)

typedef struct
{
  char name[1];  
}next_t;

typedef struct 
{
charlen;
next_t *InfoS;
}Info_t;


int cstringTostruct(char *test)
{
int i = 0;
  int InfoLen = sizeof(next_t);
Info_t *Temp1 = (Info_t *)test;
  int len = Temp1->len;
printf("%x\t",test[1]);
Temp1->InfoS = (next_t *)malloc(sizeof(next_t)*len); //执行这句话后。这个数据内容就变了。奇怪
memcpy(Temp1->InfoS[0].name,"1",1);
//for(int i=0; i<len; i++)
//{
//memcpy(Temp1->InfoS[i].name,&test[1+(i*InfoLen)],len);
// }
printf("%x\t",Temp1->InfoS->name);
printf("%x\t",test[1]);// 执行上面那个申请内存空间后,这个值都变了。奇怪return 1;
}


void main()
{

char sz[2048] = {1};
memset(sz,0x11,sizeof(sz));
memcpy(&[1],"1",1);
  cstringTostruct(sz);

}


[解决办法]
你把内存都自己在纸上画一下(以字节为单位)就清楚了,不用考虑字节序问题

热点排行