中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言sort函數如何處理結構體

小樊
84
2024-07-18 23:32:37
欄目: 編程語言

在C語言中,可以使用標準庫函數qsort來對結構體進行排序。qsort函數的原型如下:

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

其中,base是指向要排序的數組的指針,nmemb是數組中元素的個數,size是每個元素的大小,compar是一個指向比較函數的指針。比較函數的原型如下:

int compare(const void *a, const void *b);

比較函數返回一個負值、零或正值,分別表示第一個參數小于、等于或大于第二個參數。

如果要對結構體數組進行排序,需要編寫一個比較函數,用來比較結構體中的某個字段。假設有如下定義的結構體:

typedef struct {
    int id;
    char name[50];
} Person;

可以編寫一個比較函數來比較結構體的id字段:

int compare_person(const void *a, const void *b) {
    Person *person1 = (Person *)a;
    Person *person2 = (Person *)b;
    
    if (person1->id < person2->id) {
        return -1;
    } else if (person1->id > person2->id) {
        return 1;
    } else {
        return 0;
    }
}

然后調用qsort函數對結構體數組進行排序:

int main() {
    Person people[] = {
        {3, "Alice"},
        {1, "Bob"},
        {2, "Charlie"}
    };
    
    qsort(people, 3, sizeof(Person), compare_person);
    
    for (int i = 0; i < 3; i++) {
        printf("%d: %s\n", people[i].id, people[i].name);
    }
    
    return 0;
}

運行上述代碼,將輸出排序后的結構體數組:

1: Bob
2: Charlie
3: Alice

0
东方市| 卓资县| 越西县| 江源县| 邢台市| 清涧县| 光泽县| 苏尼特右旗| 博湖县| 汶上县| 翁牛特旗| 广汉市| 元江| 原阳县| 那坡县| 科尔| 兴隆县| 江永县| 澄迈县| 海兴县| 临夏市| 璧山县| 靖西县| 黑龙江省| 安义县| 武义县| 调兵山市| 延寿县| 班戈县| 辰溪县| 林州市| 池州市| 乐东| 灵川县| 若羌县| 天等县| 运城市| 安阳市| 弥渡县| 珲春市| 赤峰市|