Mi spiegate perchè questo semplice programma non funziona? Dovrebbe ordinare quest'array di puntatori in base al campo "titolo"... come potete vedere eseguendolo invece non ordina nulla!
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct tipo { char* titolo; int i; } tipo_t;
int compare (const void * p1, const void * p2){
tipo_t * z1 = (tipo_t*) p1;
tipo_t * z2 = (tipo_t*) p2;
return strcmp(z1->titolo,z2->titolo);
}
int main(){
tipo_t** array = malloc(5*sizeof(tipo_t*));
int i;
for(i=0;i<5;i++) array[i]=malloc(sizeof(tipo_t));
array[0]->titolo = "vaccc";
array[1]->titolo = "dksj";
array[2]->titolo = "pkjio";
array[3]->titolo = "efwe";
array[4]->titolo = "jnjn";
qsort(array, 5, sizeof(tipo_t*),compare);
for(i=0;i<5;i++) printf("%s\n", array[i]->titolo);
return 0;
}