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;
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;
}
Ho provato a guardare la funzione qsort() e sarei interessato al funzionamento se qualcuno mi spiega come farla funzionare. Grazie in anticipo.