2
stdlib qsortを使用して文字列の配列をソートしようとしています。誰かが私に不足しているステップを教えてもらえますか?qsortを使用した文字列のソート
1.unsorted文字列配列の 2.first文字列が間違っている(ノーマがamnorとして印刷):
int compare(const void* a, const void* b)
{
const char *ia = (const char *)a;
const char *ib = (const char *)b;
return strcmp(ia, ib);
}
//utility to print strings
void print_strs(char name[][10],int len){
int i=0;
len = 5;
for(i=0;i<len;i++){
printf("%s \n",name[i]);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char names[5][10] = {"norma","daniel","carla","bob","adelle"};
int size1 = sizeof(names[0]);
int s2 = sizeof(names)/size1;
print_strs(names,5);
qsort(names,s2,sizeof(char),compare);
printf("\n==================\n");
print_strs(names,5);
return 0;
}
次の出力での問題があります。
メイク'char *'の配列を(あなたの比較関数が定義されているように)ソートしようとしているのか、 'char [10]'(配列が宣言されている)の配列か 'char 's(あなたがqsortに渡したサイズに従います)。 – immibis
'sizeof(char)' - > 'size1' – kaylum