for (j = 1; j < x; j++)
{
for (n = 1; n < x; n++)
{
if (strcmp(info[n - 1].lname, info[n].lname) > 0)
{
strcpy(t, info[n - 1].lname);
strcpy(info[n - 1].lname, info[n].lname);
strcpy(info[n].lname, t);
}
}
}
for (j=0; j < x; j++)
{
printf("\n-------------------------------------------------------------------------\n");
printf("ID number: %d", info[j].ID);
printf("\nName: %s %s", info[j].fname, info[j].lname);
printf("\nClass: %d%s", info[j].form, info[j].classname);
printf("\nSymptons: %s", info[j].symptom);
printf("\nPrescription: %s", info[j].symadmin);
printf("\n-------------------------------------------------------------------------\n");
}
美好的一天,我一直试图让这个工作相当一些。我想按姓氏对字符串数组进行排序。问题是,姓氏是排序的,但ID,fname,类等附带的数据没有按姓氏排序。即只有姓氏改变位置。
我该如何纠正? 提前谢谢。
编辑:我可以看一下实现,而不是单词。
答案 0 :(得分:1)
您必须交换整个结构:
if (strcmp(info[n - 1].lname, info[n].lname) > 0)
{
Patient t;
t = info[n - 1];
info[n - 1] = info[n];
info[n] = t;
}
答案 1 :(得分:0)
那是因为你只是交换了姓氏。你也需要交换其他所有东西。
if (strcmp(info[n - 1].lname, info[n].lname) > 0)
{
//swap ID
int idTemp = info[n - 1].ID;
info[n - 1].ID = info[n].ID;
info[n].ID = idTemp;
//swap last name
strcpy(t, info[n - 1].lname);
strcpy(info[n - 1].lname, info[n].lname);
strcpy(info[n].lname, t);
//now swap first name
strcpy(t, info[n - 1].fname);
strcpy(info[n - 1].fname, info[n].fname);
strcpy(info[n].fname, t);
//now swap classname
strcpy(t, info[n - 1].classname);
strcpy(info[n - 1].classname, info[n].classname);
strcpy(info[n].classname, t);
//now swap symptom
strcpy(t, info[n - 1].symptom);
strcpy(info[n - 1].symptom, info[n].symptom);
strcpy(info[n].symptom, t);
//now swap sysadmin
strcpy(t, info[n - 1].symadmin);
strcpy(info[n - 1].symadmin, info[n].symadmin);
strcpy(info[n].symadmin, t);
}