Если результат предназначен для людей, лучше использовать strcoll. Это медленнее, чем strcmp или strcasecmp, но учитывает неанглийские символы. Если вы собираетесь использовать его, не забудьте установить свой язык для LC_COLLATE, т.е.
setlocale (LC_COLLATE, "");