0

4 つの名前の char 配列があり、次のように qsort で並べ替えます。

char players[4][20];
char *strings[4];

/*input of the players into players[4] via stdin not shown*/

for(int i = 0; i < 4; i++) {
    strings[i] = players[i];
    printf("strings unsorted: %s \n", strings[i]);
}

size_t strings_len = sizeof(strings) / sizeof(char *);
qsort(strings, strings_len, sizeof(char *),cstring_cmp);

Qsort は、ソートされた名前を持つポインターを返すようになりました。名前を新しいchar配列namesSorted [4] [20]にコピーするにはどうすればよいですか?

乾杯、ジュディス

4

1 に答える 1

1
char namesSorted[4][20];
...
for(int i = 0; i < 4; i++) {
    strcpy(namesSorted[i], strings[i]);
}

[U]残念ながら、 を使用した後、いくつかのエントリが複数回取得されますstrcpy

あなたの比較機能(質問には含まれていません)に欠陥があると思われます。

于 2013-10-24T09:20:50.290 に答える