读书人

结构体里面数组初始化有关问题

发布时间: 2013-07-16 22:38:05 作者: rapoo

结构体里面数组初始化问题
typedef struct{
int data_len;
unsigned char data[256];
} kb_ipc_magcard_track_info ;
int Exec_Get_Mag_Data(HANDLE fd,kb_ipc_magcard_track_info tracks[3])
读出的tracks[j].data[i]全是烫烫.....,网上说是数组没有初始化造成的,是这样的吗?是的话怎么初始化呢?谢谢!
[解决办法]
既然是在 C++ 里, 就使用构造函数撒
[解决办法]
memset(tracks[j].data[i], 0, 256);
[解决办法]
你的结构体里面的数组是未初始化的,所以里面的东西是未定义的,因此你访问的结果就是乱码,也就是“烫烫烫。。。。”。
在C++里的话你可以把把结构改成类,直接用类的构造函数来初始化,当然C++允许在结构体里面添加成员函数,但是给人感觉不正规。
也可以自己写函数比如Initialize(unsigned char a[],int begin,int end)

Initialize(unsigned char a[],int begin,int end)

for(int i=begin;i!=end-1;i++)
cin>>a[i];}
a[i]='\n';
}
来初始化,自己写了个,可能不是很好,具体有很多种方法哈。
[解决办法]
kb_ipc_magcard_track_info info ={100,{0}};

kb_ipc_magcard_track_info infos[3] ={{100,{0}},{100,{0}},{100,{0}}};
[解决办法]
for(int j=0;j<3;j++)
{for(int i=0;i<256;i++)
{tracks[j].data[i]=0;}
}
这个是可以的,不过在外部初始化,更好。
也可以专门给做一个函数初始化。

读书人网 >C++

热点推荐