自分の環境をソートしようとしました。CでUnix環境をソート
My C++のバージョン(std :: sort行とCstrLessクラス)は動作しますが、qsortバージョンは失敗します。私は間違って何をしていますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
extern char** environ;
struct CstrLess{
bool operator()(const char* s1, const char* s2){ return ::strcmp(s1,s2)<0; }
};
int main(){
char** env = environ;
size_t sz = 0;
for(;*env; env++,sz++) {;} //measure the env
//?
qsort(environ, sz, sizeof(char*), (int (*)(const void*, const void*)) strcmp);
/*std::sort(environ, environ + sz, CstrLess{});*/
env = environ;
while(*env){
printf("%s%c", *env++, '\0');
}
return 0;
}
あなたが「失敗」とはどういう意味ですか? – ecatmur
'qsort'は' char * 'ではなく' strcmp'に 'char **'を渡します。 – BLUEPIXY
@ecatmur出力はソートされません。 – PSkocik