#include <stdio.h>
#include <string.h>
struct akb_db
{
    char name[30];
    char home[10];
    int yar;
    int mon;
    int dy;
};
void sort_al(struct akb_db *, int);
void sort_age(struct akb_db *, int);
void pp(struct akb_db *, int, FILE *);
int main()
{
    struct akb_db dat[100];
    char buf[100], fn[30], name1[15], name2[15];
    int n, m;
    FILE *fp;

    printf("indata file name = ");
    scanf("%s", fn);
    fp = fopen(fn, "r");
    for (n = 0; fgets(buf, 100, fp) != NULL; ++n)
    {
        sscanf(buf, "%s %s %s %d %d %d",
               name1, name2, dat[n].home, &dat[n].yar, &dat[n].mon, &dat[n].dy);
        sprintf(dat[n].name, "%s %s", name1, name2);
    }
    do
    {
        printf("MENU\n");
        printf("1.Sorting in alphabetical order/2.Sorting in order of age.\n");
        printf("Please input number:");
        scanf("%d", &m);
    }
    while (m < 1 || m > 2);
    if (m == 1)
        sort_al(dat, n);
    else
        sort_age(dat, n);
    return 0;
}
void sort_al(struct akb_db *dat, int n)
{
    FILE *fp = fopen("member_data_al.dat", "w");
    char name_work1[30], name_work2[30], *p;
    for (int i = 0; i < n; ++i)
    {
        for (int j = i + 1; j < n; ++j)
        {
            p = strchr(dat[i].name, ' ');
            sprintf(name_work1, "%s", p + 1);
            strncat(name_work1, dat[i].name, p - dat[i].name);
            p = strchr(dat[j].name, ' ');
            sprintf(name_work2, "%s", p + 1);
            strncat(name_work2, dat[j].name, p - dat[j].name);
            if (strcmp(name_work1, name_work2) > 0)
            {
                struct akb_db t = dat[i];
                dat[i] = dat[j];
                dat[j] = t;
            }
        }
    }
    pp(dat, n, fp);
}
void sort_age(struct akb_db *dat, int n)
{
    FILE *fp = fopen("member_data_age.dat", "w");
    char ymd1[20], ymd2[20];
    for (int i = 0; i < n; ++i)
    {
        for (int j = i + 1; j < n; ++j)
        {
            sprintf(ymd1, "%d%02d%02d", dat[i].yar, dat[i].mon, dat[i].dy);
            sprintf(ymd2, "%d%02d%02d", dat[j].yar, dat[j].mon, dat[j].dy);
            if (strcmp(ymd1, ymd2) > 0)
            {
                struct akb_db t = dat[i];
                dat[i] = dat[j];
                dat[j] = t;
            }
        }
    }
    pp(dat, n, fp);
}
void pp(struct akb_db *dat, int n, FILE *fp)
{
    char buf[100];
    for (int i = 0; i < n; ++i)
    {
        sprintf(buf, "%s %s %d %d %d",
                dat[i].name, dat[i].home, dat[i].yar, dat[i].mon, dat[i].dy);
        printf("%s\n", buf);
        fprintf(fp, "%s\n", buf);
    }
    fclose(fp);
}
