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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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也是我定义的一个结构体。

参考技术A 这不是和普通的数组排序很像吗。你可以用冒泡法,一个个元素比较,如果是升序排列,最小的排前面;如果是降序排列,最大的排前面。你可以查找一下“冒泡法”,很经典的C程序案例。追问

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

参考技术B 解决方法:1,换个类型。
2.一位一位的比,就是一个字符一个字符来,比到有大小就可以。
3把 字符串 转换成数字long 型的,这个函数 写起来也还行的,代码量不大。
参考技术C #include <string.h>
然后使用strcmp()函数比较字符串是否相同。strcmp()返回0表示两个字符串相同。
关注我,有问题可以直接问我!!!
参考技术D 假设
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 同意 虞明明

以上是关于C语言中在定义了一个结构体,里面有char num[15],请问如何比较里面的内容?的主要内容,如果未能解决你的问题,请参考以下文章

C语言结构体里面为啥不能定义一个位?最小只能定义到char

用 结构体地址 调用 结构体中元素 非常慢的问题,怎么解决?但就C语言,不说引用

.有以下的结构体变量定义语句: struct student int num; c

c语言一个结构体如何在多个源文件里面调用?

C语言,结构体

C语言遍历结构体数组