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関数で行う方法でした。