我尝试用调用函数的循环填充结构数组。 每当我循环不止一次,第一个条目从上次调用中删除第一个条目时,我怀疑它与CALLOC()函数有关,但不确定是否需要帮助。 这是函数:
HOUSE setHouse(int count,HOUSE *house) {
int max = 20;
printf("Enter Family(%d) name (%d charecter max):\n",count + 1,max);
char *familyName = calloc(max,sizeof(char));
if(familyName != NULL) {
scanf("%s",familyName);
house -> name = familyName;
free(familyName);
} else {
printf("Allocation faild\n");
house -> name = NULL;
}
printf("Enter house number:\n");
scanf("%d",&house -> adress);
printf("Enter number of rooms:\n");
scanf("%d",&house -> rooms);
printf("Enter size of house (in sqMt sss.ss format):\n");
scanf("%f",&house -> sqMeters);
return *house;
}
这是对函数的调用:
int nHouses = 0;
printf("Number of houses in your street: ?\n");
scanf("%d",&nHouses);
HOUSE myHouse[nHouses];
for (int i = 0; i < nHouses; i++) {
setHouse(i,&myHouse[i]);
}
这里是经过两次迭代的结果示例: 在第一个迭代中给出姓氏'a',在第二个迭代中给出姓氏'b'。
Family Number Rooms Size
a 1 1 1.00
1 1 1.00
谢谢。