qsortを使って文字列のポインタ配列を文字列でソートするサンプルソースおよび実行結果を以下に記します。
以下のサンプルソースにより文字列のポインタ配列が示す文字列をソートすることができます。
qsort_str.c (改行コードLF)
#include <stdio.h>
#include <stdlib.h>
int string_compar(const void *a, const void *b)
{
return(strcmp(*(char**)a, *(char**)b));
}
int main(void)
{
int i;
char *data[5];
data[0] = "debian";
data[1] = "redhat";
data[2] = "ubuntu";
data[3] = "centos";
data[4] = "linuxmint";
printf("===== BEFORE =====\n");
for(i=0; i<5; i++) {
printf("%s\n", data[i]);
}
for(i=0; i<5; i++) {
qsort((void*)data, 5, sizeof(char*), string_compar);
}
printf("===== AFTER =====\n");
for(i=0; i<5; i++) {
printf("%s\n", data[i]);
}
return 0;
}
コンパイルし実行した結果を以下に記します。
$ gcc qsort_str.c -o qsort_str $ ./qsort_str ===== BEFORE ===== debian redhat ubuntu centos linuxmint ===== AFTER ===== centos debian linuxmint redhat ubuntu
以上、文字列のポインタ配列が示す文字列のソートをqsort関数で行う方法でした。