strcollは、ロケールのLC_COLLATEに従って文字列の順序を判定(そのロケールの辞書順)する。
Man page of STRCOLL
strcoll - cppreference.com
ロケールによっては、アルファベット順ではない場合があるらしい。
strcoll.cで、
チェコ語では、"ch"よりも"h"が前らしい。
$ vi strcoll.c $ gcc strcoll.c -o strcoll $ ./strcoll ch, h ch, h ch, h h, ch $
ロケールをチェコにして、strcollを呼んだ時だけ, "h"の後に"ch"が来る。
ハンガリー語やスペイン語などもアルファベット順が辞書順ではないみたい。
日本語がどうなのか(あいうえお順なのかとか。)は試してない。
Sample/c/strcoll/strcoll/src/strcoll at master · bg1bgst333/Sample · GitHub