[問題] 請問qsort這邊我哪裡用錯了?

看板C_and_CPP (C/C++)作者 (不能閒下來!!)時間16年前 (2009/10/07 19:41), 編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/2 (看更多)
這是書上的練習題(松崗 C語言入門) 此例故意以char ids[N][10],不是以int宣告 請問哪邊與法有錯>_<" ,希望沒摸到地雷.. 以下是程式碼: /************** *****************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 8 int comp(char *arg1, char *arg2) { return strcmp(arg1,arg2); //用字串比較 } /****** ****/ int main() { char ids[N][10]={"2001","2002","2003","2002","2007","2008","2004","2005"}; int i; qsort(ids,N,10,comp); // qsort(ids,N,sizof(char),comp); for(i=0;i<N;i++)printf("%s\n",ids[i]); system("pause"); return 0;} /****** ****/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.72.144.90

10/07 19:43, , 1F
哪裡錯講一下 是compile error還是結果錯還是?
10/07 19:43, 1F

10/07 19:43, , 2F
而且你連qsort也沒貼出來耶...
10/07 19:43, 2F

10/07 19:45, , 3F
compiler 過不去 qsort 是用stdlib.h的 Q_Q
10/07 19:45, 3F

10/07 19:45, , 4F
qsort是C標準函式庫的函式 XD
10/07 19:45, 4F

10/07 19:45, , 5F
請貼出你的錯誤訊息 與你使用的編譯環境
10/07 19:45, 5F

10/07 19:45, , 6F
qsort是內建函式不用貼出來 Orz...
10/07 19:45, 6F
19 E:\Lab\learn\C\ch08\5-2.cpp invalid conversion from `int (*)(char*, char*)' to `int (*)(const void*, const void*)' 19 E:\Lab\learn\C\ch08\5-2.cpp initializing argument 4 of `void qsort(void*, size_t, size_t, int (*)(const void*, const void*))' ※ 編輯: kingofsdtw 來自: 203.72.144.90 (10/07 19:47)

10/07 19:47, , 7F
我剛剛測試了一下 錯誤訊息已經很明白的告訴答案了 XDD
10/07 19:47, 7F

10/07 19:48, , 8F
果然很明顯....XD
10/07 19:48, 8F

10/07 19:48, , 9F
(ids,N,10,comp) (ids,N,sizof(char),comp)都過不了@@
10/07 19:48, 9F

10/07 19:49, , 10F
第三個size 不是指字元 大小嗎@@?
10/07 19:49, 10F

10/07 19:52, , 11F
我回文了,不是那行的問題啊....XDDD
10/07 19:52, 11F

10/07 19:53, , 12F
簡單講就是 qsort他吃的functor 型態是const void*
10/07 19:53, 12F

10/07 19:54, , 13F
你丟進去char * 他不給過 先丟個可過的 在自己轉型
10/07 19:54, 13F
文章代碼(AID): #1Ap7vDLF (C_and_CPP)
文章代碼(AID): #1Ap7vDLF (C_and_CPP)