在C中对文件中的数组进行排序



我正在尝试从一个文件中对学生的信息进行排序。他们的信息包括名字、姓氏和身份证号码。我已经按学生的姓氏对他们进行了分类。我通过交换他们的名字来比较他们的名字。我得到的结果是,姓氏和相应的名字都被排序了,然而,在交换身份证号码后,学生相应的身份证号码仍然没有排序。我可以帮忙吗。提前谢谢。

分拣功能

 void sorting ()
{
        system("cls");
    printf("nnttt");
    t();
    printf("n");
    struct records student[1000];
    char fname[15];
    char lname[15],temp[15];
    int id, i, j, n, IDnum;
    ATND = fopen("Student ID Numbers.txt","r+");
        rewind(ATND);
        for (i = 0; i < 1000 ; i++)
        {                                                   //Beginning for loop
            if (fscanf(ATND, "%s %s %d", fname, lname,  &id) != 3)  //Reads the contents of the file
            break;
            //Storing the read data into variables
            student[i].fname = strdup(fname);
            student[i].lname = strdup(lname);
            student[i].id = id;
        }                                                   //Ending the for loop
    fclose(ATND);

    for (j = 1; j < i; j++) 
    {
        for (n = 1; n < i; n++) 
       {    
    if (strcmp(student[n - 1].lname, student[n].lname) > 0)
            {
                strcpy(temp, student[n - 1].lname);
                strcpy(student[n - 1].lname, student[n].lname);
                strcpy(student[n].lname, temp);
            strcpy(temp, student[n - 1].fname);
            strcpy(student[n - 1].fname, student[n].fname);
            strcpy(student[n].fname, temp);
}
}
}

        for (j=0; j < i; j++)
    {
    //  if(student[j].id == IDnum)
    //  {
        //  printf("nID number: %d", student[j].id);
        //  printf("nName: %s %sn", student[j].fname, student[j].lname);
    printf("%-15s %-20s %-20d", student[j].fname, student[j].lname,  student[j].id);
        }
//  }
}

与其比较lname,不如比较id。if (strcmp(student[n - 1].id, student[n].id) > 0)

相关内容

  • 没有找到相关文章

最新更新