gpt4 book ai didi

c - 在 C 语言中对文件中的数组进行排序

转载 作者:行者123 更新时间:2023-11-30 17:02:38 24 4
gpt4 key购买 nike

我正在尝试从文件学生信息中进行排序。他们的信息包括名字、姓氏和身份证号码。我已经按姓氏对学生进行了排序。我通过交换他们的名字来比较他们的名字来做到这一点。我得到的结果是姓氏和对应的名字已排序,但是交换身份证号后,学生对应的身份证号仍然未排序。请给我一些帮助。提前致谢。

排序功能

 void sorting ()
{
system("cls");
printf("\n\n\t\t\t");
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 %s\n", student[j].fname, student[j].lname);
printf("%-15s %-20s %-20d", student[j].fname, student[j].lname, student[j].id);

}
// }
}

最佳答案

不要比较 lname,而是比较 id。if (strcmp(学生[n - 1].id, 学生[n].id) > 0)

关于c - 在 C 语言中对文件中的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com