请教高手,如何在结构体中交换字符数组???

来源:百度知道 编辑:UC知道 时间:2024/04/30 09:34:59
/*有60名学生,每个学生的数据包括学号,姓名,三门课的成绩,总分。输入学生的数据,按总分的名次由高到低输出所有学生的各项数据*/

在下面的程序中,
name1=st[i].name;
st[i].name=st[j].name;
st[j].name=name1;
这三句代码是错的,我的目的是想交换姓名,请教错在哪里在?如何实现?谢谢!

struct student
{ int num;
char name[10];
int score[3];
int sum;
}st[5]; /*为调试方便,这里只定义了5名学生*/
main()
{
int i,j,num1;
char name1[10];
int cj0,cj1,cj2,sum1;
for(i=0;i<5;i++) /*这个循环是输入数据*/
{
printf("请输入学号:");
scanf("%d",&st[i].num);
printf("请输入姓名:");
scanf("%s",st[i].name);
printf("请输入第一科成绩:");
scanf("%d",&st[i].score[0]);
printf("请输入第二科成绩:");
scanf("%d",&st[i].score[1]);
printf("请输入第三科成绩:");
scanf("%d",&st[i].score[2]);
st[i].sum=st[i].score[0]+st[i].score[1]+st[i].score

你想交换的是字符串,不能直接用=,而要用strcpy();具体做法,在头文件中加入:
#include <string.h>
交换的时候这样写才对:
strcpy(name1,str[i].name);
str[i].name={0};
strcpy(str[i].name,str[j].name);
str[j].name={0};
strcpy(str[j].name,name1);

你的name是char []的,不能直接用"="来交换。
应该用strcpy()这样的函数才行。