各位高手,大家好,我刚来这里,希望大家多多关照!这里有两个问题请高手帮忙解决下,谢谢!
1、有没有办法得到结构体中元素的个数的方法?今天被考了一道题,要求copy两个struct,当时没做出来,下来以后写了下面的程序(我把main函数中的printf给省了没写),这样以来如果我改动person中元素的数目,则必须也得去改动structcopy函数中i的值。还有就是为什么structcopy函数中i的值必须是<=4,如果是<4的话,sex就没有值,person中明明就只有4个元素么?
typedef struct str
{
int age;
float wage;
char name[8];
char sex[2];
}person;
typedef struct element
{
person zhang;
person wang;
}element;
int structcpy(element *list1, element *list2)
{
int i = 0;
int j = 0;
/*
for (i=0; i<=4; i++)
{
*(&((*list2).wang.age)+i) = *(&((*list1).wang.age)+i);
}
for (i=0; i<=4; i++)
{
*(&((*list2).zhang.age)+i) = *(&((*list1).zhang.age)+i);
}
*/
for (i=0; j<2; i++)
{
for (j=0; i<=4; j++)
{
*(&((*((&((*list2).zhang))+j)).age)+i) = *(&((*((&((*list1).zhang))+j)).age)+i);
}
}
return 0;
}
void main()
{
element people1;
element people2;
memset(&people1, 0, sizeof(people1));
memset(&people2, 0, sizeof(people2));
strcpy(people1.wang.name, "wang");
people1.wang.age = 38;
people1.wang.sex[0] = 'M';
people1.wang.wage = (float)1234.5;
strcpy(people1.zhang.name, "zhang");
people1.zhang.age = 40;
people1.zhang.sex[0] ='W';
people1.zhang.wage = (float)1556.7;
structcpy(&people1, &people2);
return;
}
2、在上面的程序中,为什么people1.wang.wage = (float)1234.5可以正常输出1234.500000,而people1.zhang.wage = (float)1556.7输出却是1556.699951?
本人菜鸟,但诚心学习,望高手指点,万分感谢!
[此贴子已经被作者于2007-9-4 17:49:24编辑过]