void sort()
{
FILE* fp;
int a=0;
char na[10],i[10],j[10];
char clas[10],stu_code[15],id_code[20];
char sex[5], enyear[10], birthday[20], major[20], name[10];
struct stu_node* tail = NULL, * head = NULL, * pMove = NULL, * n = NULL,* pNext = NULL,temp= NULL;
if ((fp = fopen("test.dat", "r")) == NULL)
{
fp = fopen("test.dat", "w+");
fclose(fp);
return;
}
while (1)
{
if (fscanf(fp,"%s%s%s%s%s%s%s%s\n", name, sex, major, clas,
birthday, stu_code, id_code, enyear) != 8) break;
n = (struct stu_node)malloc(sizeof(struct stu_node));
n->next = NULL;
strcpy(n->clas,clas);strcpy(n->stu_code,stu_code);
strcpy(n->id_code,id_code);
strcpy(n->name, name); strcpy(n->sex, sex);
strcpy(n->major, major); strcpy(n->enyear, enyear);
strcpy(n->birthday, birthday);
if (head == NULL)
head = n;
else
tail->next = n;
tail = n;
}
fclose(fp);
while(a!=3)
{
printf("----------1.按班级排序-------------\n");
printf("----------2.按学籍号码排序----------\n");
printf("----------3.退出------------------\n");
scanf("%d",&a);
switch(a)
{
case 1: pMove=head;
while(pMove)
{
pNext = pMove->next;
while (pNext != NULL)
{
if (strcmp(pMove->clas, pNext->clas) > 0)
{
temp->clas = pMove->clas;
pMove->clas = pNext->clas;
pNext->clas = temp->clas;
}
pNext = pNext->next;
}
pMove = pMove->next;
}
pMove = head->next;break;
case 2:
pMove=head;
while(pMove!=NULL)
{
pMove=pMove->next;
}break;
case 3:printf("退出排序!\n");return;
default :printf("输入错误,请重新输入!\n");
}
pMove=head;
while (pMove != NULL)
{
printf("%5s%5s%20s%5s%20s%20s%20s%10s\n", pMove->name, pMove->sex, pMove->major,
pMove->clas, pMove->birthday, pMove->stu_code, pMove->id_code, pMove->enyear);
pMove = pMove->next;
}
}
}
已结题
为什么不能运行?该如何修改?
- 写回答
- 好问题 提建议
- 追加酬金
- 关注问题
- 分享
- 邀请回答