91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
神农架林区| 武功县| 衢州市| 台山市| 晋中市| 彭阳县| 隆子县| 淮安市| 高阳县| 开平市| 政和县| 武山县| 稷山县| 玛纳斯县| 中阳县| 云安县| 玉龙| 忻州市| 东光县| 四平市| 定襄县| 乌拉特后旗| 漳州市| 嘉兴市| 齐齐哈尔市| 绥江县| 柳州市| 淮安市| 鄂温| 平果县| 汉寿县| 闽侯县| 乐都县| 德格县| 同江市| 宜黄县| 深水埗区| 日照市| 桃园县| 通榆县| 韩城市|