我在C編程。我有一個結構數組。我需要基於結構的元素以排序順序打印數組。卡住的主要問題是我不想修改原始數組。數組的排序
例如: 我的數組是proctab [10]。 這是名爲pentry的結構數組。
struct pentry
{
int a;
int b;
char c;
}
我需要打印如下:
a = 1, b = 2, c = a
a = 2, b = 1, c = d
a = 3, b = 0, c = e
a = 4, b = 1, c = a
a = 4, b = 2, c = a
等.. 即結果上的排序。但是如果a對於數組中的兩個結構具有相同的值,則數組也應該在b上排序。我想要原始數組proctab保持不變。
有沒有辦法做到這一點?
如果有幫助,我知道在Java中你只是讓對象實現「Comparable」並實現'compareTo' - 我確定C中有類似的東西嗎? [這個問題](http://stackoverflow.com/questions/8838800/c-determine-if-class-is-comparable)似乎是相關的,也許它是有用的? – Krease
製作副本('malloc','memcpy'),然後對副本('qsort')進行排序? – Heinzi
string.h中的memcpy和stdlib.h中的qsort將解決您的問題。 – jfly