亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
新化县| 宝清县| 读书| 云和县| 新余市| 乐昌市| 松江区| 日土县| 乌拉特后旗| 百色市| 沽源县| 夏邑县| 万源市| 南开区| 肥西县| 沅江市| 鄯善县| 怀安县| 山阴县| 旅游| 博湖县| 乌拉特前旗| 茌平县| 康定县| 彭山县| 桂平市| 长岛县| 许昌市| 巴林右旗| 乌拉特中旗| 澎湖县| 攀枝花市| 老河口市| 福建省| 潞西市| 连城县| 仲巴县| 松滋市| 深泽县| 乐昌市| 轮台县|