ho le seguenti strutture

codice:
typedef struct studente
{
 char nome[200];
 char cognome[200];
 int  matricola;
 char iscrizione[200];
} Studente;

typedef struct studente
{
 char *nome:
 char *cognome;
 int  *matricola;
 char *iscrizione;
} Studente;
con la prima non mi funzione il bubblesort (devo ordinare un vettore di studenti tramite il campo cognome); con la seconda nn mi funziona il caricamento da file.
Per quanto riguarda il riempimento del vettore di strutture utilizzando la notazione char *s (puntatore a char) non permette il riempimento "corretto" dei campi della struttura, cosa che non accade utilizzando la notazione char s[200] (vettore di char, che è un puntatore all'indirizzo base del vettore); per quanto riguarda il secondo caso l'ordinamento tramite l'algoritmo del bubblesort funziona solamente se si usa la notazione char *s e non char s[200].

codice:
void sort(Studente s[], int dim)
{
    Studente temp;
    int i, ordinato=0;

    while(!ordinato)
    {
        dim--;
        ordinato=1;
        for(i=0;i< dim;i++)
            if(strcmp(s[i].cognome,s[i+1].cognome)>0)
            {
                temp.nome=s[i].nome; //incompatible types when assigning to type ‘char[200]’ from type ‘char *’
                temp.cognome=s[i].cognome;
                temp.matricola=s[i].matricola;
                temp.iscrizione=s[i].iscrizione;
                s[i].nome=s[i+1].nome;
                s[i].cognome=s[i+1].cognome;
                s[i].matricola=s[i+1].matricola;
                s[i].iscrizione=s[i+1].iscrizione;
                s[i+1].nome=temp.nome;
                s[i+1].cognome=temp.cognome;
                s[i+1].iscrizione=temp.iscrizione;
                s[i+1].matricola=temp.matricola;
                ordinato=0;
            }
    }