アプリ版:「スタンプのみでお礼する」機能のリリースについて

アドレス帳を作りたいのですが、下のような構造体を名前(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;
}


}
質問がわかりにくいかもしれませんが、よろしくお願いします。

A 回答 (2件)

stdlib.hのqsort関数を使って


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

参考URL:http://okweb.jp/kotaeru.php3?qid=1171494,http:// …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 21:10

並べ替えを行う関数を、



sort_person(struct person* src)
{
 // ソートのアルゴリズムで並べ替え
 …
  // ループ
  …
  // 入れ替え
  swap_person(&src[i], &src[j])
}

として、

swap_person(struct person* a, struct person* b)
{
 // a,bのメンバを入れ替える
}

のようなswap関数を用意しておけば大丈夫です。


> アルファベット順

strcmp関数がピッタリです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/03 21:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!