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は比較する要素を指すポインタであり、比較関数は整数値を返す必要があります。
- もし返り値が0よりも小さい場合は、aはbの前に配置されるべきです。
- 返り値が0より大きい場合、aはbの後ろに配置されるべきです。
- 返り値が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()関数を呼び出してこの配列を並べ替え、並び替えられた結果はアルファベット順になります。