• ベストアンサー

プログラミング初心者です

アドレス帳を作りたいのですが、下のような構造体を名前(friend[i].name)のアルファベット順に並び替えることはできますか? struct person { char name[30]; char tel[30]; char addr[30]; }; main() { ・ ・ while(a=='y') { struct person friend[20]; scanf("%ls",friend[i].name); scanf("%ls",friend[i].tel); scanf("%ls",friend[i].addr); scanf("%s"&a) i=i+1; } ・ ・ } 質問がわかりにくいかもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

stdlib.hのqsort関数を使って personのnameフィールドでstrcmp比較するような関数を作って渡してやればいいです。

参考URL:
http://okweb.jp/kotaeru.php3?qid=1171494,http://okweb.jp/kotaeru.php3?qid=1198450
minustarsdesu
質問者

お礼

URLも参考になりました☆ありがとうございます!

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

並べ替えを行う関数を、 sort_person(struct person* src) {  // ソートのアルゴリズムで並べ替え  …   // ループ   …   // 入れ替え   swap_person(&src[i], &src[j]) } として、 swap_person(struct person* a, struct person* b) {  // a,bのメンバを入れ替える } のようなswap関数を用意しておけば大丈夫です。 > アルファベット順 strcmp関数がピッタリです。

minustarsdesu
質問者

お礼

strcmp関数ですか!ありがとうございます!頑張ってやってみます☆

関連するQ&A