URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1739
[ Назад ]

Исходное сообщение
"qsort и ругань gcc"

Отправлено forfreeuse , 03-Июн-03 19:54 
Помогите разобраться. Пытаюсь воспользоваться функцией qsort. Наваял код, компилиться, работает даже, но при компиляции раздражает сильно варнинг про неправильный тип функции сравнения:

ash-2.05b# gcc 1.c
1.c: In function `main':
1.c:16: warning: passing arg 4 of `qsort' from incompatible pointer type

Пробовал преобразовывать типы - не получается. Вроде глупость, а неприятно, подскажите пожалуйста, как поправить.

#include <stdlib.h>


int compare (char *arg1, char *arg2)
{
  return(strcmp(arg1, arg2));
}


int main ()
{

int z;
char lists[3][10]={"zxzv","abcd","bcde"};

qsort(lists, 3,10,compare);

for(z=0;z<3;z++)
  {
   printf("%d %s\n",z,lists[z]);
  }

}


Содержание

Сообщения в этом обсуждении
"qsort и ругань gcc"
Отправлено Soldier , 03-Июн-03 21:37 
Нда...

Из man qsort:

void qsort(void *base, size_t nmemb, size_t size,
                  int(*compar)(const void *, const void *));

Значит надо

> int compare (char *arg1, char *arg2)
> {
>  return(strcmp(arg1, arg2));
> }

заменить на
int compare (const void *arg1, const void *arg2)
{
  return(strcmp((char *) arg1,(char *)  arg2));
}