什么都不用说,通过一个样例看看吧.
typedef struct
{
int LinkID;
int classnum;
char name[20];
}map;
int comp1(const void *a,const void *b)
{
map *c=(map *)a;
map *d=(map *)b;
if(c->LinkID!=d->LinkID)
return c->LinkID-d->LinkID;
else
return d->LinkID-c->LinkID;
}
int comp2(const void *a,const void *b)
{
map *c=(map *)a;
map *d=(map *)b;
if(c->classnum!=d->classnum)
return c->classnum-d->classnum;
else
return d->classnum-c->classnum;
}
void sortInfo(int const n)
{
FILE *file=fopen("map.txt","r+");
map mymap[200];
int i=0;
if(file==NULL)
{
printf("打开文件失败!\n");
exit(0);
}
fread(mymap,sizeof(map),n,file);
printf("输入排序方式(1 按LinkID; 2 按 classnum): ");
scanf("%d",&i);
if(i==1)
qsort(mymap,n,sizeof(map),comp1);
else
qsort(mymap,n,sizeof(map),comp2);
rewind(file); //重置位置指针.
fwrite(mymap,sizeof(map),n,file);
fclose(file);
}