[解決済み] qSortを使った文字列のソート
2022-02-14 01:41:01
質問
これによると サイト 私は、文字列をソートする以下のプログラムを作成しました。
#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char list[5][4]={"dat","mai","lik","mar","ana"};
int main(int argc, char *argv[])
{
int x;
puts("sortirebamde:");
for (x=0;x>sizeof(list)/sizeof(char);x++)
printf("%s\n",list[x]);
qsort(&list,(sizeof(list)/sizeof(char)),sizeof(list[0]),strcmp);
system("PAUSE");
return EXIT_SUCCESS;
}
以下は、私が受け取ったエラーです。
13 C:\Documents and Settings\LIBRARY\Desktop\string_sortireba.cpp invalid conversion from `int (*)(const char*, const char*)' to `int (*)(const void*, const void*)'
13 C:\Documents and Settings\LIBRARY\Desktop\string_sortireba.cpp initializing argument 4 of `void qsort(void*, size_t, size_t, int (*)(const void*, const void*))'
ご協力お願いします
解決方法を教えてください。
注意:C言語の文字列を2次元のchar配列に格納するのは珍しいことです。 通常は
char *ary[]
argvのような。 この型は
qsort
と
strcmp
というのは、qsort は
char **
ない
char *
を比較関数に追加します。 これは効率的で、文字列全体ではなく、ポインタを交換することができます。 そのため
qsort の Linux マニュアルページ
には、正しい比較関数を使った良いサンプルコードがあります。
を渡すことはできません。
strcmp
を直接
qsort
を比較関数として使用します。
qsort
へのポインタを渡すことを想定しています。
void
ここで
strcmp
へのポインタを期待します。
const char
. へのポインタの間に必要な類似性がある場合
void
へのポインタと
char
を使用すると、あなたは
かもしれない
しかし、よりクリーンな方法は、正しい型を受け取る関数を書くことでしょう。
int cmpstr(void const *a, void const *b) {
char const *aa = (char const *)a;
char const *bb = (char const *)b;
return strcmp(aa, bb);
}
ただし、C++では通常
std::sort
の代わりに
qsort
を使用し、おそらく
std::string
の代わりに
char *
この場合、ソートはよりシンプルになります(そして一般的に速くなります)。
関連
-
[解決済み】構造体のベクター初期化について
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】構造体のベクター初期化について
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】C++の余分な資格エラー
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?