我的id和grade都是用了字符串,无法直接进行大小比较,我
用了int x;sscanf(Students[i].student_id,"%d",&x)然后比较,还是不行
用了strcmp(Students[i].student_grade,x)>0,还是不行
struct StuInfo{
char student_id[30];
char student_name[30];
char student_class[10];
char student_grade[10];
}Students[MAX];
排序代码我用的是快速排序,用普通的顺序表排序验证该排序代码可行,但用于我的Students就无效了
我曾经尝试从头改成int,马上各种功能报错,改了半天都没办法,连其他管理功能都实现不了。
我其中一种排序代码是:
int char_compare(char a[30]){
int gradeid;
sscanf(a,"%d",&gradeid);
return gradeid;
}
void quick_sort_id(int l,int r){
int i,j;
int x;
if(l
i=l;
j=r;
sscanf(Students[i].student_id,"%d",&x);
while(i
while(i
j--;
if(i
while(i
if(i
}
sprintf(Students[i].student_id,"%d",&x);
quick_sort_id(l,i-1);
quick_sort_id(i+1,r);
}
}