• ベストアンサー

漢字のソートについて

noname#5537の回答

  • ベストアンサー
noname#5537
noname#5537
回答No.8

> 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 すぐに動かせるサンプルがあるのにぃ。

参考URL:
http://www.geocities.co.jp/SiliconValley-Oakland/1865/visualc/NoryImm.html
mk1234
質問者

お礼

回答ありがとうございます。 自作プログラムでも"東京", "大阪", "神奈川", "愛知", "埼玉", はちゃんと並び変わりました。 しかし、南、南、角、南、南だとまったく並び変わりません。 yoppiiさんのコードだと当然並び変わります。 当然のことながらcmpstrでも並び変わることが分かったので、コードのどこかがおかしいか調べてみます。 >すぐに動かせるサンプルがあるのにぃ。 すみません。ごめんなさい。あやまります。 完全に見落としていました。

mk1234
質問者

補足

解決しました。 同じ文字の場合の並べ替えがうまくいっていませんでした。 >0を>=0に変更して解決しました。

関連するQ&A

  • Excelでのソートの方法

    Excelでソートをしたいのですが、並べ替えの方法が分りません。氏名をあいうえお順に並べ替える方法を教えて下さい。住所や電話番号が空欄になっている場所があると並べ替えられないのでしょうか?

  • ソートについて

    array listをソートしたいのですが、複数のarray listをひとつのarray listを基準として、並び変えることは可能ですか? たとえば、1つが生徒の名前のarray listで、もう1つが成績のarray listだとしたら、名前のarray lisをあいうえお順にソートし、成績を成績順ではなく、名前に対応するように並びかえたいのです。 なにか方法があったらよろしくお願いします。

    • ベストアンサー
    • Java
  • 漢字が読めない!

    友達に年賀状(遅)を出そうとしたら、どうしても苗字が読めません。 その苗字は、上が「代」。下が「黒」っていう漢字なんですが、分かる方教えてください。 漢字弱いもんですいません。

  • 戸籍の漢字について

    国家試験を受ける際、戸籍を確認したところ、市役所では使われていない漢字が苗字に入っていることに気づきました。現住所は岩手で、本籍が秋田にあったので、本籍を移すのと同時に常用漢字に変更しました。秋田にいる祖母、東京にいる叔父の戸籍は変更する前の旧漢字のままなのですが、血縁間で戸籍の漢字が違うということがあってもいいのでしょうか?教えて下さい。

  • エクセル2000の並び替え(漢字とひらがなをいっしょにして並び替えたい)

    ネットでコピーしたものをエクセルに貼付け あいうえお順に並び替えたいのですが、 漢字とひらがな、があり、並び替えると、ひらがな、ばかりが先に来て、 漢字が後になるのですが、ひらがなと漢字を区別せずび並び替えたいのですが、 方法はあるのでしょうか? よろしくお願いします。

  • 手紙の書き方:あて名の漢字に自信がないとき

    フルネームの読みは知っていますが漢字がわからない(自信がない)方へお手紙を出す必要に迫られています。 苗字の漢字は知っているのですが名前のほうがわかりません。 互いに付き合いがないので、調べる手段はありません。 電話帳にも載っていませんでした。 この場合、苗字は漢字で名前はひらがなにして宛て名を書いてもよいのでしょうか。 ご助言、よろしくお願いします。

  • エクセル:  ソート後処理でデータ選出

    エクセルSheet1の表、項目1に県名、項目2に市名が載っている表があります。(ランダムにデータ間の重複あり)、表中に実際にある項目1、と項目2の組合せで、県名を第1キーであいうえお順に ソートし、市名を第2キーで同様ソートしたものを重複無くした表をsheet2に作りたいのですが、 重複無くした表をsheet2にするという操作はどうすればいいのでしょうか。よろしくお願いします。

  • 年賀状ソフトの住所録作りで、難しい漢字を使用するには?

    年賀状ソフトで、住所録を作る上で困っています。 普通に入力しても変換候補として出てこない漢字が使われている苗字を入力するにはどうしたらよいのでしょうか? 入力したい漢字は、虫へんに「蝦夷」の「夷」が付いた漢字です。 ウィンドウズの文字コード表で見るとMingLiU というフォントの中の虫へんの漢字グループの「虫」という字から数えて7行目の左から3つ目の漢字です。その漢字をクリックするとU+86E6という文字列も出てきます。これが多分文字コードなのでは?と思っているのです。 文字コード表からこの文字をコピーして、年賀状ソフトの住所録にコピーすると。?マークに置き換わってしまいます。 ワードやエクセルなどには一応貼り付けられるのですが、ワードで「宛名印刷ウィザード」を使って宛名を作ろうと思うと、やはり?マークに置き換わってしまいます。 この漢字を年賀葉書に印刷する方法をお教えください。 よろしくお願いします。

  • エクセルの並べ替え

    エクセルの「データ→並べ替え」の質問です。 住所録(900行超)を並べ替えると、どういう訳か2つのグループに分かれて、それぞれでソートされます。どうしてかなぁ?文字列でも数字列でもダメでした。全体をひとつのデータとして「あいうえお順」もしくは「郵便番号順」にソートしたいのですが、改善策を教えてください。よろしくお願いします。

  • Perlのソートについて

    ハッシュを利用して今ソートできるプログラムを作成したのですが、 重複するデータは除外されてしまうようで、どうしたら除外されずに ソートできるかを教えていただきたいです。 <例> 文字 よみ  No      橋  はし  1      橋  はし  3      箸  はし  2 というデータがあったとして、今のプログラムを実行すると・・・ <結果> 箸  はし  2 キーがよみなので3番目のデータだけ残ります。キーを漢字に したとしても1番目のデータは残らないのですが、どうしてらよいのでしょうか。 <理想的な結果>      橋  はし  1      箸  はし  2      橋  はし  3 一番いいのが上のような結果で、Excelのソートのような感じで、第1キーはよみで第2キーはNoとかのソートはPerlでできないでしょうかね?? どなたか分かる方がいたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl