|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 67
|
[C] aiuto su qsort
Salve a tutti, stavo cercando di capire come far funzionare la qsort su un array allocato dinamicamente, contenente un puntatore ad una struttura.
Ora andando a scrivere la funzione per comparare, mi sono trovato a dover fare il cast da void* alla mia struttura. Quello che devo fare è ordinare in ordine alfabetico l'array usando un dato campo delle strutture in esse contenuto. La struttura è la seguente: Codice:
typedef struct _rubrica
{
char cognome[30];
char nome[30];
char numero[30];
} rubrica;
Codice:
int confronta(const void *a, const void*b)
{
rubrica *ia = (rubrica*)a;
rubrica *ib = (rubrica*)b;
char p[30];
char q[30];
strcpy(p, ia->cognome);
strcpy(q, ib->cognome);
int c1 = p[0], c2 = q[0];
if (c1 < c2)
{
return 1;
}
else if (c1 > c2)
{
return -1;
}
else
{
return 0;
}
}
Codice:
qsort(array, elem, sizeof*array, confronta); Chi mi potrebbe illuminare sul corretto utilizzo della qsort, per favore ?
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 67
|
Ciao, ho risolto perchè oltre a dover usare la strcmp, dovevo eseguire meglio il cast da void a rubrica
Codice:
int confronta(const void *a, const void*b)
{
const rubrica *r1 = *(const rubrica *const *)a;
const rubrica *r2 = *(const rubrica *const *)b;
return strcmp(r1->cognome, r2->cognome);
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:06.










?









