> strcmpだとどうしてまったく並び変わらないのでしょう?
strcmp の場合でも,まったく並び変わらないということはないと思うのですが。
状況がよく分からないのでとりあえず,
実験用に作ったコードと実行結果を載せときます。
試してみてください。
#include <stdio.h>
#include <stdlib.h>
#include <mbstring.h>
#include <string.h>
int comp(const void *x, const void *y)
{
// return _mbscmp(*(unsigned char**)x, *(unsigned char**)y);
return strcmp(*(char**)x, *(char**)y);
}
int main(int argc, char* argv[])
{
char *list[] = {
"東京", "大阪", "神奈川", "愛知", "埼玉",
};
const int n = sizeof(list) / sizeof(list[0]);
/* ソート */
qsort(list, n, sizeof(list[0]), comp);
/* 表示 */
for (int i=0 ; i<n ; i++) {
puts(list[i]);
}
return 0;
}
/* 実行結果 */
愛知
埼玉
神奈川
大阪
東京
/* 環境 */
Windows 2000 SP4, VC++ 6.0 SP5
> IMEの入力時に読みを取ることをVC++で実現するにはどうすれば良いのでしょうね?
や,だから #6 で示した URL に,
http://www.geocities.co.jp/SiliconValley-Oakland/1865/visualc/NoryImm.html
すぐに動かせるサンプルがあるのにぃ。
お礼
回答ありがとうございます。 自作プログラムでも"東京", "大阪", "神奈川", "愛知", "埼玉", はちゃんと並び変わりました。 しかし、南、南、角、南、南だとまったく並び変わりません。 yoppiiさんのコードだと当然並び変わります。 当然のことながらcmpstrでも並び変わることが分かったので、コードのどこかがおかしいか調べてみます。 >すぐに動かせるサンプルがあるのにぃ。 すみません。ごめんなさい。あやまります。 完全に見落としていました。
補足
解決しました。 同じ文字の場合の並べ替えがうまくいっていませんでした。 >0を>=0に変更して解決しました。