编辑代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person {
    char name[50];
    int age;
    char gender;
};

int main() {
    struct Person *people;
    int num_people;

    printf("Enter the number of people: ");
    scanf("%d", &num_people);
    getchar(); // 清除换行符

    // 动态分配内存给结构体数组
    people = (struct Person*)malloc(num_people * sizeof(struct Person));
    if (people == NULL) {
        fprintf(stderr, "Memory allocation failed.\n");
        return 1;
    }

    // 读取和存储多个人员的信息
    char line[100];
    for (int i = 0; i < num_people; i++) {
        printf("Enter information for person %d (Name, Age, Gender):\n", i + 1);
        while (1) {
            fgets(line, sizeof(line), stdin);
            if (sscanf(line, "%49s %d %c", people[i].name, &people[i].age, &people[i].gender) == 3) {
                break;
            } else {
                printf("Invalid input format. Please enter again (Name, Age, Gender):\n");
            }
        }
    }

    // 打印所有人员的信息
    printf("\nList of people:\n");
    for (int i = 0; i < num_people; i++) {
        printf("Name: %s\n", people[i].name);
        printf("Age: %d\n", people[i].age);
        printf("Gender: %c\n", people[i].gender);
    }

    // 释放分配的内存
    free(people);

    return 0;
}