2
我想使用stdlib qsort對字符串數組進行排序。任何人都可以指向我缺少的步驟。使用qsort排序字符串
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;
}
以下是在輸出的問題:
1.unsorted字符串 陣列的2.first串不正確(諾瑪打印爲AMNOR)。
norma
daniel
carla
bob
adelle
==================
amnor
daniel
carla
bob
adelle
彌補
所以,你可以通過調用
qsort
爲糾正你想知道你是否試圖對一個char *數組進行排序(當你的比較函數被定義時)或者一個char [10](數組被聲明)或者一個char (根據你傳遞給qsort的大小)。 – immibis'sizeof(char)' - >'size1' – kaylum