typedef struct
{
char number[10];//书号
char name[50];//书名
char author[20];//作者
char publish[50];//出版社
char time[20];//出版时间
float price;//单价
}mbook;
typedef struct
{
int count;//书的本数
mbook book[N];//最大可有书的数量
}mlibrary;
mlibrary library;
问题出现在排序上,核心问题是不知道如何交换结构体。望高手解答,感谢~
一下是排序的程序源
void sort_by_number() /*定义按书号排序函数*/
{
struct mbooktemp;
int i,j,k;
for(i=0;i<library.count-1;i++)
{
k=i;
for(j=i+1;j<library.count;j++)
if(library.book[j].number<library.book[k].number)
k=j;
if(k!=i)
{
mbooktemp=library.book[k];
library.book[k]=library.book[i];
library.book[i]=mbooktemp;
}
}
}
还是不行呀,您的意思是这样?
typedef struct
{
char number[10];//书号
char name[50];//书名
char author[20];//作者
char publish[50];//出版社
char time[20];//出版时间
float price;//单价
}mbook,mbooktemp;
排序需要比较,对于结构体,并没有现成的比较方式,必须人为指定结构体的比较方式。
可以使用qsort函数进行排序,使用该函数必须传入一个比较函数。
例如:
int mycmp(const void *a, const void *b){
return (*(Information *)a)->average > (*(Information *)b)->average ? 1 : -1;
}