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.