作者kingofsdtw (不能閒下來!!)
看板C_and_CPP
標題[問題] 請問qsort這邊我哪裡用錯了?
時間Wed Oct 7 19:40:57 2009
這是書上的練習題(松崗 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
1F:推 QQ29:哪裡錯講一下 是compile error還是結果錯還是? 10/07 19:43
2F:→ QQ29:而且你連qsort也沒貼出來耶... 10/07 19:43
3F:→ kingofsdtw:compiler 過不去 qsort 是用stdlib.h的 Q_Q 10/07 19:45
4F:→ james732:qsort是C標準函式庫的函式 XD 10/07 19:45
5F:→ james732:請貼出你的錯誤訊息 與你使用的編譯環境 10/07 19:45
6F:→ tomnelson:qsort是內建函式不用貼出來 Orz... 10/07 19:45
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)
7F:→ james732:我剛剛測試了一下 錯誤訊息已經很明白的告訴答案了 XDD 10/07 19:47
8F:推 VictorTom:果然很明顯....XD 10/07 19:48
9F:→ kingofsdtw:(ids,N,10,comp) (ids,N,sizof(char),comp)都過不了@@ 10/07 19:48
10F:→ kingofsdtw:第三個size 不是指字元 大小嗎@@? 10/07 19:49
11F:→ james732:我回文了,不是那行的問題啊....XDDD 10/07 19:52
12F:→ QQ29:簡單講就是 qsort他吃的functor 型態是const void* 10/07 19:53
13F:→ QQ29:你丟進去char * 他不給過 先丟個可過的 在自己轉型 10/07 19:54