C语言结构体数组排序法

struct goods//定义商品类
{
int id; //商品编号
char name[20]; //商品名称
char produce[20]; //商品产地
int number; //商品数量
float bid; //进价
float price; //卖价
char unit[20]; //单位
char type[20]; //种类
};

void IDPaixu()
{
int m=0,n=0,t=0;
int ID;
char choice;
struct goods i[1000];
struct goods temp;
FILE *fp;
fp=fopen("goods.txt","r");
if(fp==NULL)
{
printf("\t\t\t系统抽风啦,重试一下!");
exit(0);
}
while(!feof(fp))
{
fread(&i[m],sizeof(struct goods),1,fp);
for(m=0;m<i[m].id-1;m++)
{
for(n=m+1,t=m;n<i[m].id;n++)
if (i[t]<i[n]) t=n;
if(m!=t)
{
temp=i[t];
i[t]=i[m];
i[m]=temp;
}
}
fwrite(&i[m],sizeof(struct goods),1,fp);
fclose(fp);
}
}
运行以后出现错误
E:\数据结构\try2\try2.cpp(122) : error C2676: binary '<' : 'struct goods' does not define this operator or a conversion to a type acceptable to the predefined operator
觉得自己编的很对。。。

第1个回答  2015-06-13
直接比较i[t].id<i[n].id就可以了啊追问

!好机智!!!
那这段代码能加到我另一个浏览代码的哪个位置。。。还是直接单独使用ID排序?

追答

你的这个void IDPaixu()函数是按照结构体goods里的id排序的吧,你直接把
for(n=m+1,t=m;n<i[m].id;n++)
if (i[t]<i[n]) t=n;
中的 if (i[t]<i[n]) 换为if(i[t].id<i[n].id)就可以了

本回答被提问者采纳
第2个回答  2015-06-13
酒吧里,小强跟人起了冲突,对方说:“你再骂我一句呆B试试?你知道死字怎么写吗?”
“歹匕。”
相似回答
大家正在搜