Salve a tutti, ho un problema a dir poco curioso.

Ho, nel mio codice, un tipo struct, formato in questo modo:

codice:
typedef struct elementMat {
    int riga;
    int numero;
    int colonna;
    struct elementMat *link;
} elementMat;
è la cella di una lista concatenata. Fin qui, tutto ok.

Nel prosequio del codice, i campi degli oggetti del tipo struct vengono inizializzati tramite una lettura da file (con funzione fscanf).

L'operazione riesce benissimo. Viene effettuata all'interno di un ciclo, fin quando ci sono ancora dati nel file.



Il problema nasce al di fuori del ciclo, ed in generale della funzione che crea la lista concatenata.

Quando si va ad accedere ai dati della lista, alcuni valori sono corretti ed altri (ad intervalli regolari) non lo sono.

Esempio, i valori contenuti nei campi sono:

codice:
Numero Riga   Colonna
1         2       3
2         3       54234565
3         1       2
4         2       4144455
e cosi via, considerando validi solo i valori n<5



La cosa assurda è che, cambiando l'ordine degli elementi nella struct, il dato sballato risulta essere un altro (ad esempio riga), oppure , con alcune disposizioni degli elementi nella definizione della struct, il programma va in crash.


Esempio di crash:

codice:
typedef struct elementMat {
    struct elementMat *link;
    int riga;
    int numero;
    int colonna;
} elementMat;

Secondo voi cosa causa questo strano comportamento? Non riesco a risolvere, perchè la cosa non ha alcun senso. Come è possibile che quei campi vengano sovrascritti? Mi sembra assurdo.


Grazie anticipatamente.