所以我有這個排序函數是假設要在一個結構數組中,我需要按名稱組織它們,都有名字和姓氏,如果他們的姓氏是相同的,那麼我必須繼續前進到名字也要比較一下。所以我製作了兩個包含最後名字和第一個名字的字符串,並將它們合併爲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