C语言中在定义了一个结构体,里面有char num[15],请问如何比较里面的内容?

char num[15]里面存放的是学号,我现在要按照学号来对我输入的学生成绩进行排序,可不知道这个怎么比较,谁知道的帮下我。。。

可以调用strcmp函数,在头文件string.h里面
比如你定义了两个结构体s1,s2,那么比较的方法为:
int i;
i=strcmp(s1.num,s2.num);
如果i<0表示s1.num小于s2.num
如果i=0表示s1.num等于s2.num
如果i>0表示s1.num大于s2.num追问

我写的是k=strcmp(char stu[j].num,char stu[j-1].num),然后用if(k>0)执行交换语句,VC报错说缺少")",这是怎么回事?

追答

你试下k=strcmp(stu[j].num,stu[j-1].num)

追问

刚试了下,把char去掉后不报错了。但是还是没有打到效果。我还是把这个函数发出来,麻烦你帮我看看吧:
sort_bynumber(struct student stu[],int n)
{
int i,j,k;
for(i=1;i0)
{
t=stu[j-1];
stu[j-1]=stu[j];
stu[j]=t;
}
}
}t也是我定义的一个结构体。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-14
这不是和普通的数组排序很像吗。你可以用冒泡法,一个个元素比较,如果是升序排列,最小的排前面;如果是降序排列,最大的排前面。你可以查找一下“冒泡法”,很经典的C程序案例。追问

我用的就是冒泡法,呵呵。主要是纠结在比较上面哦。。

第2个回答  2012-06-14
解决方法:1,换个类型。
2.一位一位的比,就是一个字符一个字符来,比到有大小就可以。
3把 字符串 转换成数字long 型的,这个函数 写起来也还行的,代码量不大。
第3个回答  2017-10-16
#include <string.h>
然后使用strcmp()函数比较字符串是否相同。strcmp()返回0表示两个字符串相同。
关注我,有问题可以直接问我!!!
第4个回答  2012-06-14
假设
struct student
{
char num[15]
}
mstu;
则mstu.num[n] n[0,14]就相当于一个字符数组追问

这个我知道,我主要问的是如何对里面的学号进行比较,我函数都写的差不多了,就是if语句里面的判断内容不知道怎么写。

追答

一般字符串你怎么比较呢?

追问

strcmp这个函数我也试了,VC6.0老是提示我说缺少)。

追答

if(strcmp(mstu.num,"ABCD...") 应该可以的呀
k=strcmp(char stu[j].num,char stu[j-1].num),不要有char 同意 虞明明

相似回答