Salve a tutti, sto svolgendo questo esercizio: dato un file in cui sono scritti: nome cognome media esami di un gruppo di studenti, devo leggere il file e ordinare gli studenti per media. Sono riuscito a inserire tutti gli strudenti in una struttura con la quale ho definito un nuovo tipo di dato, tuttavia non riesco ad ordinare poich� nonostante io riesca a fare l�ordinamento con la media, poi non ci riesco per nome e cognome. Come mi posso muovere? Il problema � che se effettuo l�ordinamento e, ad esempio, se lo faccio trovarndo il massimo e poi scambiando, non posso fare lo stesso con i campi nome e cognome, in quanto stringhe.


codice:
/*
 ============================================================================
 Name        : 14_marzo.c
 Author      : Luigi Daddario
 Version     :
 Copyright   : Luigi Daddario
 Description : Esercitazione del 14 marzo laboratorio di programmazione
 ============================================================================










 */


#include <stdio.h>
#include <stdlib.h>


typedef struct {


    char nome[30];
    char cognome[30];
    int media_esami;


}studente;


int main(void) {


    /* definisco il numero degli studenti */
    int numero_studenti = calcolaNumeroStudenti("/home/luigi/Scrivania/file.txt");
    studente elenco_studenti[numero_studenti];




    riempiStruttura("/home/luigi/Scrivania/file.txt", elenco_studenti,10); /* inserisco i dati dal file nella struttura */






    return EXIT_SUCCESS;
}


int calcolaNumeroStudenti(char nome_file[])
{


    FILE *fp;
    fp = fopen(nome_file, "r");
    int numero_studenti = 0;
    char line[256];


    if(fp)
    {
        while(!feof(fp))
        {


            fgets(line, sizeof(line), fp);
            numero_studenti++;


        }
    }
    else printf("Errore nell'apertura del file");


    fclose(fp);




    return numero_studenti;
}


void riempiStruttura(char nome_file[], studente elenco_studenti[], int numero_studenti)
{


        FILE *fp;
        fp = fopen("/home/luigi/Scrivania/file.txt", "r");
        int i = 0;


        if(fp)
        {
            while(!feof(fp))
            {
                while(i<10){


                fscanf(fp, "%s\t%s\t%d", elenco_studenti[i].nome, elenco_studenti[i].cognome, &elenco_studenti[i].media_esami);


                i++;
                }
                }
        }
        else printf("Impossibile aprire il file!");


        fclose(fp);


}