鑄造一個const void *的,以一個const char *所以我有一個C函數是這樣的:用C
int cmp (const void *a, const void* b)
return rot13cmp((const char*)a, (const char*)b);
}
和rot13cmp是另一個函數,接受類型爲const char的兩個參數*。
我將此函數傳遞給C qsort函數的比較參數,但它似乎不起作用。
但是,如果我不是做
return rot13cmp (*(const char **)a, *(const char **)b);
投的常量無效*變量的函數,然後開始工作。我看了這篇文章,但是每個消息來源都說第一種鑄造方法應該起作用,所以我想知道爲什麼只有第二種方法適用於我?
編輯:下面是相關的代碼我有,
int cmp (const void *a, const void *b) {
return rot13cmp((const char *)a, (const char *)b);
}
int rot13cmp (const char *a, const char *b) {
while (*a == *b && *a != '\n') {
a++;
b++;
}
if (*a == *b) { return 0; }
else if (*a == '\n') { return 1; }
else if (*b == '\n') { return 1; }
else { return rot13(*a) - rot13(*b);
}
和ROT13返回由字母表中的13個字母旋轉的字母的ASCII碼的int。
我通過執行
qsort(words, word_count, sizeof(char*), cmp);
其中詞語是字符數組**和word_count中是一個int稱爲的qsort。 cmp也只是
我覺得像[SSCCE](http://www.sscce.org)在這裏真的會有幫助。 – 2015-02-08 16:33:34
發生這種情況肯定有其他原因。 – 2015-02-08 16:33:53
那麼你是怎麼稱呼'qsort()'的? – timrau 2015-02-08 16:34:53