#navi(../)

* qsortを使って文字列のポインタ群のソートを行うサンプルソース [#gdfda19b]
qsortを使って文字列のポインタ配列を文字列でソートするサンプルソースおよび実行結果を以下に記します。

#contents
#htmlinsertpcsp(c-top.html,c-sp.html)

* 関連記事 [#y6311725]
-[[qsortを使って文字列のポインタ群のソートを行うサンプルソース>ソート/qsortを使って文字列のポインタのソートを行う]]
-[[qsortを使って数値配列のソートを行うサンプルソース>ソート/qsortを使って数値配列のソートを行う]]

* qsortを使って文字列群をソートする [#s6634f60]
以下のサンプルソースにより文字列のポインタ配列が示す文字列をソートすることができます。

&ref(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;
 }

* 文字列ソートの実行結果 [#scbc0262]
コンパイルし実行した結果を以下に記します。
 $ gcc qsort_str.c -o qsort_str
 $ ./qsort_str 
 ===== BEFORE =====
 debian
 redhat
 ubuntu
 centos
 linuxmint
 ===== AFTER =====
 centos
 debian
 linuxmint
 redhat
 ubuntu

以上、文字列のポインタ配列が示す文字列のソートをqsort関数で行う方法でした。

#htmlinsertpcsp(c-btm.html,c-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS