C语言读取二进制文件升序排序保存到文本文件

typedef struct _st_record {
    char            szName[60];
    char            nGender;        /* 0--male, 1--female */
    unsigned char   nAge;
    short           nBirthYear;
    char            szDescription[150];
} RRECORD;

文件中有若干条以下列结构体形式保存的数据,把它们全部读取出来,按照szName升序排序后,以文字形式保存到文本文件中(所有字符串都是ASCII字符,不考虑UTF8格式)。typedef struct _st_record {
    char            szName[60];
    char            nGender;        /* 0--male, 1--female */
    unsigned char   nAge;
    short           nBirthYear;
    char            szDescription[150];
} RRECORD;

原文件是二进制文件吗?

typedef struct _st_record {
    char            szName[60];
    char            nGender;        /* 0--male, 1--female */
    unsigned char   nAge;
    short           nBirthYear;
    char            szDescription[150];
} RECORD;

int main()
{
    RECORD rec[1000],temp;
    int n = 0,i=0,j=0;
    FILE *fp = fopen("a.dat","rb+");
    FILE *fp1 = fopen("b.txt","w");
    while(!feof(fp))
    {
        fread(&rec[n],sizeof(RECORD),1,fp);
        n++;
    }
    fclose(fp);
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(strcmp(rec[j].szName,rec[j+1].szName) > 0)
            {
                temp = rec[j];
                rec[j] = rec[j+1];
                rec[j+1] = temp;
            }
        }
    }
    for(i=0;i<n;i++)
    {
        fprintf(fp,"%s\t%c\t%d\t%d\t%s\n",rec[i].szName,rec[i].nGender,rec[i].nAge,rec[i].nBirthYear,rec[i].szDescription);
    }
    fclose(fp1);
    return 0 ;
}