溫馨提示×

c語言字符串?dāng)?shù)組如何排序

小億
144
2024-02-01 11:33:48
欄目: 編程語言

c語言中可以通過使用庫函數(shù)qsort()來對字符串?dāng)?shù)組進(jìn)行排序。

qsort()函數(shù)原型為:

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

其中,base為待排序數(shù)組的起始地址,nmemb為待排序數(shù)組的元素個數(shù),size為每個元素的大小,compar為比較函數(shù)的指針。

比較函數(shù)的原型為:

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

其中,ab為指向待比較元素的指針,比較函數(shù)應(yīng)返回一個整數(shù)值:

  • 若返回值小于0,則a應(yīng)排在b之前;
  • 若返回值大于0,則a應(yīng)排在b之后;
  • 若返回值等于0,則ab的相對順序不變。

下面是一個示例代碼,演示如何使用qsort()函數(shù)對字符串?dāng)?shù)組進(jìn)行排序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int compare(const void *a, const void *b) {
    return strcmp(*(char **)a, *(char **)b);
}

int main() {
    char *array[] = {"apple", "banana", "orange", "grape", "lemon"};
    int length = sizeof(array) / sizeof(array[0]);

    qsort(array, length, sizeof(array[0]), compare);

    for (int i = 0; i < length; i++) {
        printf("%s\n", array[i]);
    }

    return 0;
}

輸出結(jié)果為:

apple
banana
grape
lemon
orange

該示例中,字符串?dāng)?shù)組array中存儲了5個字符串,通過調(diào)用qsort()函數(shù)對其進(jìn)行排序,排序結(jié)果按照字母順序排列。

0