Salve a tutti, ho cercato e ho letto diversi articoli riguardo a questa cosa ma non sono riuscito a capirne molto. Ho un array di strutture e quello che mi serve è di ordinare l'array in base a un parametro della struttura. Allego il sorgente in modo che sia tutto più chiaro. Il parametro da riespettare per l'ordinamento è int codice;
Ho provato a guardare la funzione qsort() e sarei interessato al funzionamento se qualcuno mi spiega come farla funzionare. Grazie in anticipo.codice:#include <stdio.h>#include <stdlib.h> void nuovo(int); void ordina(); typedef struct { int codice; char titolo[20]; char autore[20]; int anno; char editore[20]; }lib; int const dim=100; lib libri[dim]; int i=0,t; int main(){ int a; char risp; printf("Che cosa vuoi fare?:\n"); printf("1)Aggiungere un libro\n2)Ordinare i libri in base al codice\n"); scanf("%d",&a); switch (a){ case 1: do{ nuovo(i); i=i+1; printf("Vuoi registrare un altro libro? %d\n",i); scanf("%s",&risp); }while(risp=='s'||risp=='S'); break; case 2: ordina() //ancora da creare! break; } return 0; } void nuovo (int i){ FILE *fp; fp=fopen("ciao","ab"); if ((fp = fopen("numeri.dat","wb"))==NULL) printf("errore"); printf("Codice libro:"); scanf("%d",&libri[i].codice); printf("Titolo libro:"); scanf("%s",libri[i].titolo); printf("Autore libro:"); scanf("%s",libri[i].autore); printf("Anno libro:"); scanf("%d",&libri[i].anno); printf("Editore libro:"); scanf("%s",libri[i].editore); fwrite(libri,sizeof(libri),1,fp); fclose(fp); printf("Sono stati inseriti tutti i campi necessari per registrare il libro"); return; }

Rispondi quotando