所以我有这个排序函数是假设要在一个结构数组中,我需要按名称组织它们,都有名字和姓氏,如果他们的姓氏是相同的,那么我必须继续前进到名字也要比较一下。所以我制作了两个包含最后名字和第一个名字的字符串,并将它们合并为1,然后遍历列表中的内容并查看哪些内容较小并将其移动。但问题是......它什么都不做......我不明白为什么!这个排序功能为什么不起作用? C
void sortStruct(struct student *list, int studentCount){
int j, k;
struct student temp;
char buffer[35];
char buffer2[35];
for (j = 0 ; j <= studentCount-2 ; j++){
sprintf(buffer, "%s, %s", list[j].lastname, list[j].firstname);
for(k = 1 ; k <= studentCount-1 ; k++){
sprintf(buffer2, "%s, %s", list[k].lastname, list[k].firstname);
if(buffer < buffer2){
temp = list[j];
list[j] = list[k];
list[j] = temp;
}
}
}
}
任何人都知道最新错了吗?
缓冲<缓冲器2绝对不是什么你要。这只是比较两个内存地址!你应该使用函数strcmp()。 – 2013-03-03 04:52:11
将其添加为答案学徒队列:) – Skurmedel 2013-03-03 04:53:30
我认为比较了字符串的长度!? – Sherifftwinkie 2013-03-03 04:54:27