Так что я застрял с этой функцией сортировки, потому что все, кажется, отлично работает, когда я отлаживаю ее, и нет никаких ошибок или предупреждений, что бы это ни было, но это каким-то образом застревает в бесконечном цикле.qsort бесконечный цикл вызывает ошибку C
Моя структура (если это поможет):
typedef struct raeume{
char number[5];
char klasse[6];
int tische;
}raeume;
мой старт функции QSort:
void ausgabesortiert(struct raeume *arr[],int used,int size)
{
qsort(*arr,size,sizeof(raeume),cmp);
ausgabesortiert(arr,size,used);
}
Моя функция сравнения:
int cmp(const void * a, const void * b)
{
raeume *raumA = (raeume *) a;
raeume *raumB = (raeume *) b;
int tempA = raumA->klasse[0] - '0';
int tempB = raumB->klasse[0] - '0';
if(tempA < tempB)
{
return -1;
}
else if(tempA > tempB)
{
return 1;
}
else if(tempA == tempB)
{
if(raumA->tische > raumB->tische)
{
return -1;
}
else if(raumA->tische < raumB->tische)
{
return 1;
}
else if(raumA->tische == raumB->tische)
{
return 0;
}
}
return 0;
}
Кроме того, функция 'cmp' может быть проще, поскольку два теста совершенно не нужны (2 теста равенства). Функция требует только 4 теста с окончательным 'return 0', который в настоящее время не выполняется. Ни один из '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –
@WeatherVane да, ваше право, спасибо! –
И хотя я не собираюсь выбирать, функция 'cmp' может быть немного быстрее, удалив' - '0' 'из каждой инициализации - вы все равно будете делать достоверные сравнения. –