注册 登录
编程论坛 C++教室

结构体中的字符比较大小后怎么将他们相互复制的啊帮忙解答下啊!要指出方法的哦

张海锋 发布于 2012-12-27 22:26, 1037 次点击
struct stu{int xuehao;char mingzi[20];char sex[20];int age;int chengji;char xueyuan[20];};
stu s[3]={{0501,"李明","男",19,610,"信院"},{0502,"张莉","女",19,599,"信院"},{0503,"王涛","男",20,580,"控制"}};
void zuhe(stu s[])
{
    char t;
    for(int b=0;b<=2;b++)
        for(int c=b+1;c<=2;c++)
        {
          if(strcmp(s[b].sex,s[c].sex)<0)
          {
              strcpy(t,s[b]);
                  strcpy(s[b]=s[c]);
                  strcpy(s[c]=t);
          }
        }
}
14 回复
#2
yuccn2012-12-28 00:41
你想干什么?性别来比较,之后交换他们的性别?????
?????
而且,字符串拷贝用的一塌糊涂

下面是你要的交换性别的代码,我写的也很无语
 char t[128];
 strcpy(t,s[b].sex);
 strcpy(s[b]].sex, s[c].sex);
 strcpy(s[c]].sex,t);
#3
张海锋2012-12-28 11:10
回复 2楼 yuccn
我是让他们按照性别排序,然后将一个学生的信息输出,版主莫怪哈
#4
yuccn2012-12-28 16:28
回复 3楼 张海锋
你这样没有达到排序的效果的,只是把他们的性别交换了。呵呵
吧整个结构体数据交换才行
#5
张海锋2012-12-28 16:47
strcpy(t,s[b]);
                  strcpy(s[b]=s[c]);
                  strcpy(s[c]=t);
我这里不是整个复制了吗?
#6
yuccn2012-12-28 17:17

strcpy(s[c]=t);
strcpy(s[b]=s[c]); 这样编译不过的
#7
huang19381202012-12-28 17:30
有点看不懂 但是看的很奇怪    楼主别见怪  俺也是鑫手
#8
张海锋2012-12-28 22:51
回复 6楼 yuccn
那一般的格式是怎样的啊,辛苦啦
#9
yuccn2012-12-28 22:57
结构体交换,可以定义一个临时的结构体,
比如要交换 s[b] s[c],

memcpy(&temp, sizeof(stu), &s[b]);
memcpy(&s[b], sizeof(stu), &s[c]);
memcpy(&s[c], sizeof(stu), &temp);
#10
不玩虚的2012-12-29 10:15
学习c++一定要构思正确,学生操作的话。要嘛按学号排,要嘛按成绩大小,要嘛按名字字典序排。比较性别难道是同学校,同学号,同名,同成绩?要是这样的话,比较下他是男的还是女的就可以啦,不用把他两的性别比较。继续想大家学习,编程思想要对啊,不要让人说编程的思想不对。
#11
额外覆盖2012-12-29 13:14
回复 9楼 yuccn
yu版难道又是喝酒后壮着胆子回的帖?学习了!
#12
machji2012-12-29 19:00
stu temp;
temp=s[b];
s[b]=s[a];
s[a]=temp;
这样交换可以吗
#13
张海锋2012-12-29 22:41
回复 10楼 不玩虚的
我是想先排下性别然后再拍其他的,这样子比较好看点嘛
#14
张海锋2012-12-29 22:42
回复 10楼 不玩虚的
不过还是谢谢提醒
#15
额外覆盖2012-12-29 22:52
回复 12楼 machji
定义一个同样的结构体变量作为中间量交换就行
1