0

現在、qsort関数を使用して、構造体内の特定のフィールドで構造体配列を並べ替えることを検討していますが、開始点を使用することもできます。

これが私の現在の構造体配列です:

/* database struct */
typedef struct node {
    char       name[MAX];
    char       lname[MAX];
    char       address[MAX];
    char       number[MAX];
}record_type;

/* global variables */
record_type record[100];

これを「名前」フィールドでアルファベット順に並べ替えることができるようにしたいと思います(AZ)。各char配列のすべてのエントリは小文字です。オンラインまたは私が持っているCの本でこれを行う方法についての情報を見つけるのに苦労しています。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

4

qsort の署名に従って。

void qsort ( void * base, size_t num, size_t size,
             int ( * compar ) ( const void *, const void * ) );

比較関数を定義します。

int compare_record_type(const void* a, const void* b) {
    return strncmp(((*record_type)a)->name, ((*record_type)b)->name, MAX)
}

そして、このように qsort を呼び出します。

qsort(record, 100, sizeof(record_type), compare_record_type)

詳細はcplusplus.comをご覧ください

于 2012-12-06T22:59:35.253 に答える