我正在尝试将结构Human
存储到数组中,同时在for
循环中生成一个。我完全无助,因为我对指针还很陌生,无法使这一段代码正常工作。
我最大的问题是
Human
存储在Human
s的数组中Human
的变量并使用它们这是我当前的代码:
typedef struct {
int day;
int month;
int year;
} Date;
typedef struct {
char *name;
Date Birth_date;
} Human;
char gen_name() {
char *name[5];
name[0] = "Zoro";
name[1] = "Peter";
name[2] = "Ambrozsy";
name[3] = "Chuanita";
name[4] = "Jack";
int x = rand() % 5;
return (name[x]);
}
Human *createHuman(char *name, int day, int month, int year) {
Human *h = malloc(sizeof(Human));
h->name = name;
h->Birth_date.day = day;
h->Birth_date.month = month;
h->Birth_date.year = year;
return h;
}
void gen_Humans(Human array[], int n) {
// n == MAX
for (int i = 0; i < n; i++) {
char *name = gen_name();
int day = gen_day();
int month = gen_month();
int year = gen_year();
array[i] = *createHuman(name, day, month, year);
}
}
int main() {
Human *human_array[MAX];
gen_Humans(human_array, MAX);
printHuman(human_array, MAX);
}
答案 0 :(得分:0)
human_array
是一个指针数组,因此您需要在get_Humans()
中以相同的方式声明它:
void gen_Humans(Human *array[], int n)
那么您不应该取消引用createHuman()
返回的指针:
array[i] = createHuman(name, day, month, year);
您没有显示printHuman()
,但也需要类似。在其中,您可以使用以下方式打印个人:
printf("%s %d-%02d-%02d\n", array[i]->name, array[i]->Birth_date.year, array[i]->Birth_date.month, array[i]->Birth_date.day);