C言語の文字列配列をソートする方法は何ですか?

C言語では、文字列配列を並べ替えるためにライブラリ関数qsort()を使用できます。

qsort()関数のプロトタイプは:

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

baseはソートされる配列の開始アドレス、nmembはソートされる配列の要素数、sizeは各要素のサイズ、comparは比較関数のポインタである。

比較関数のプロトタイプは次のとおりです:

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

aとbは比較する要素を指すポインタであり、比較関数は整数値を返す必要があります。

  1. もし返り値が0よりも小さい場合は、aはbの前に配置されるべきです。
  2. 返り値が0より大きい場合、aはbの後ろに配置されるべきです。
  3. 返り値が0の場合、aとbの相対的な順序は変わりません。

以下は、文字列配列をソートする際にqsort()関数を使用する方法を示すサンプルコードです。

#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;
}

結果は次の通りです:

apple
banana
grape
lemon
orange

この例では、5つの文字列が文字列配列arrayに保存されており、qsort()関数を呼び出してこの配列を並べ替え、並び替えられた結果はアルファベット順になります。

bannerAds