如何将结构体中两个字符数组内容交换
我写的学生成绩管理程序中学生按总成绩排名有疑问,函数如下:voidSort(Linkl,intamount)/*按总成绩排序*/{structperson{charnum...
我写的学生成绩管理程序中学生按总成绩排名有疑问,函数如下:void Sort(Link l,int amount)/*按总成绩排序*/ { struct person { char num[10];/* 学号 */ char name[20]; /*姓名*/ char sex[10];/*性别*/ char clas[10];/*班级*/ int mgrade;/*数学*/ int egrade; /*英语*/ int cgrade;/*计算机*/ int totle;/*总分*/ }; struct person cop[100];/*这个地方有局限性,只能从文件中复制100个到新定义的结构体中*/int i,t,j;char *num1[10]={"0"},*name1[20]={"0"},*sex1[10]={"0"},*clas1[10]={"0"}; FILE* fp; Node *p; fp=fopen("c:\\student","rb"); /*打开文件*/ if(fp==NULL) { printf("\n=====>提示:重新打开文件时发生错误!\n"); return; } p=l->next; for(i=1;i<=amount;i++)/*将文件中的内容复制到新结构体中*/ fread(&cop[i],sizeof(Node),1,fp); printc(); for(t=1;t<amount;t++) for(i=t+1;i<=amount;i++) if(cop[t].totle<cop[i].totle) {j=cop[t].totle;cop[t].totle=cop[i].totle;cop[i].totle=j; j=cop[t].mgrade;cop[t].mgrade=cop[i].mgrade;cop[i].mgrade=j; j=cop[t].cgrade;cop[t].cgrade=cop[i].cgrade;cop[i].cgrade=j; j=cop[t].egrade;cop[t].egrade=cop[i].egrade;cop[i].egrade=j; strcpy(num1[10],cop[t].num);strcpy(cop[t].num,cop[i].num);strcpy(cop[i].num,num1[10]); strcpy(name1[20],cop[t].name);strcpy(cop[t].name,cop[i].name);strcpy(cop[i].name,name1[20]); strcpy(sex1[20],cop[t].sex);strcpy(cop[t].sex,cop[i].sex);strcpy(cop[i].sex,sex1[10]); strcpy(clas1[10],cop[t].clas);strcpy(cop[t].clas,cop[i].clas);strcpy(cop[i].clas,clas1[10]); } for(t=1;t<=amount;t++) printf("%s\t%s\t\t%s\t%s\t%d\t%d\t%d\t\t%d\n",cop[t].num,cop[t].name,cop[t].sex,cop[t].clas, cop[t].mgrade,cop[t].egrade,cop[t].cgrade,cop[t].totle); fclose(fp); }其中的学号,姓名,性别,班级互换有问题,请帮我解决一下。谢谢!
展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询