ho le seguenti strutture
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.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;
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; } }

Rispondi quotando