如何将结构体中两个字符数组内容交换

我写的学生成绩管理程序中学生按总成绩排名有疑问,函数如下: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); }其中的学号,姓名,性别,班级互换有问题,请帮我解决一下。谢谢! 展开
 我来答
汉经邝白薇
2020-05-02 · TA获得超过3691个赞
知道大有可为答主
回答量:3092
采纳率:25%
帮助的人:214万
展开全部
你试试定义时char
*num1[10]={"0"},*name1[20]={"0"},*sex1[10]={"0"},*clas1[10]={"0"};把前面的*号都去掉,我觉得是你的定义有问题,直接定义字符组就可以了,你定义的是指针组。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式