编辑代码

#include<stdio.h>
const int str_len = 20;

struct _student {
    char name[20];
    int gender;
    int age;
};

void getlist(struct _student student[], int number);
int save(struct _student student[], int number);

void main()
{
    int number = 1;
    printf("请输入学生数量:");
    scanf("%d", &number);
    struct _student student[number];
    getlist(student, number);
    if (save(student, number))
        printf("保存成功");
    else
        printf("保存失败");
}

void getlist(struct _student student[], int number)
{
    char format[str_len];
       sprintf(format, "%%%ds", str_len - 1);
    int i;
    for (i = 0; i < number; i++)
    {
        printf("第%d个学生:\n", i);
        printf("\t姓名:");
        scanf(format,student[i].name);
        printf("\t性别(0-男,1-女,2-其他):");
        scanf("%d", &student[i].gender);
        printf("\t年龄:");
        scanf("%d", &student[i].age);
    }
}
int save(struct _student student[], int number)
{
    int ret = -1;
    FILE* fp = fopen("student.data", "w");
    if (fp)
    {
        ret = fwrite(student, sizeof(student), number, fp);
        fclose(fp);
    }
    return ret==number;
}