qsortを使用したい – プログラミング – Home

通知
すべてクリア

[解決済] qsortを使用したい


琅珎
 琅珎
(@琅珎)
ゲスト
結合: 21年前
投稿: 7
Topic starter  

基本的なエラーだと思うのですが修正の仕方がわかりません。

qsortを利用して文字列のソートを行おうとしています。
以下のコードを組んだのですがエラー
error C2664: 'qsort' : 4 番目の引数を 'int (const void *,const void *)'
から 'int (__cdecl *)(const void *,const void *)' に変換できません
を出します。

void CDlg::getFolderName(CString FolderPath) // 指定のあるフォルダパス
{
// フォルダ名の取得
WIN32_FIND_DATA wfd;
HANDLE hFindFile;
hFindFile = FindFirstFile((LPCTSTR)(FolderPath + \\*.*), &wfd);
CString FldName;
char *tmpFldName[50]; // 一時的にフォルダ名を保存
LONG fldcun = 0; // 検索したフォルダ数(文字列の数)
do{
FldName = wfd.cFileName;
if(strcmp(wfd.cFileName,.)!=0 &&
strcmp(wfd.cFileName,..)!=0 &&
(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0){
tmpFldName[fldcun] = wfd.cFileName; fldcun ++;
}
}while(FindNextFile(hFindFile, &wfd) == TRUE);

qsort(tmpFldName, fldcun, sizeof(char *), pstrcmp); // クイックソート
}

// 文字列の比較
int CDlg::pstrcmp(const void *a, const void *b)
{
return _stricmp( * ( char** )a, * ( char** )b);
}

エラーの意味はわかるのですがどうやってpstrcmpを
(__cdecl *)(const void *,const void *)
にすればいいのかがわかりません。
ご教授お願いいたします。


引用未解決
トピックタグ
珞珈
 珞珈
(@珞珈)
ゲスト
結合: 21年前
投稿: 2
 

申し訳ありません。
環境を書き忘れてしまいました。
Win2000 VC++6 MFCです。
よろしくお願いいたします。


返信引用
琅珎
 琅珎
(@琅珎)
ゲスト
結合: 21年前
投稿: 7
Topic starter  

名前が変です。
琥珀(こはく)と打ってるんですが・・・登録後
琅珎又は珞珈に変わっているようです。
同一人物です。申し訳ありません


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

#include <iostream>
#include <cstdlib>

using namespace std;

class CDlg {
static int pstrcmp(const void *a, const void *b) {
return _stricmp(*(char**)a, *(char**)b);
}
public:
void sort() {
char* tbl[3];
tbl[0] = banana;
tbl[1] = cherry;
tbl[2] = apple;
qsort(tbl, 3, sizeof(char*), &CDlg::pstrcmp);
cout << tbl[0] << '/' << tbl[1] << '/' << tbl[2] << endl;
}

};

int main() {
CDlg dlg;
dlg.sort();
return 0;
}


返信引用
琅珎
 琅珎
(@琅珎)
ゲスト
結合: 21年前
投稿: 7
Topic starter  

呼び出しの方法が違うんですね。
わかりました。
επιστημηさんありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました