Используйте qsort с функцией сравнения
Я знаю qsort из библиотеки c, и я реализовал его с помощью символов и целых чисел (преобразовать из const void * form в соответствующую форму), но сейчас я реализую код, который дает мне самое длинное дублирование в данных предложениях - простая функция сравнения
int pstrcmp(char **p,char **q){
return strcmp(*p,*q);
}
и я хочу использовать его в qsort, как это
qsort(a,n,sizeof(char *),pstrcmp);(a is array of strings)
когда я пишу напрямую, он пишет, что это несовместимо и сын, показывает ошибку, пожалуйста, помогите мне исправить это
ошибка это
2 IntelliSense: аргумент типа "int (*)(char **p, char **q)" несовместим с параметром типа "int (__cdecl *)(const void *, const void *)" c:\users\ датуашвили \ Documents\visual studio 2010\projects\duplicate_strings\duplicate_strings\duplicates_strings.cpp 32 27 duplicate_strings
1 ответ
Вы должны дать своей функции компаратора правильную сигнатуру функции, а затем выполнить внутреннее приведение, например
int pstrcmp(const void * p, const void * q)
{
const char **ps = (const char **)p;
const char **qs = (const char **)q;
return strcmp(*ps, *qs);
}