espongo il quesito cercando d essere chiaro:
ho una struttura di questo tipo:
typedef struct
{
FILE *file;
struttura stato; // stato è definito tramite un enum come APERTO o CHIUSO
int x;
} struttura;
e devo fare una funzione che inizializzi un oggetto di questa struttura. L'ho fatta in questo modo:
int nuovo(char *fname, struttura *St) {
/* controlli vari sul nome del file */
FILE *fp = fopen(fname,"r");
if (!fp) return ERR; // ritorna un codice di errore
/*non ci sono errori, inizializza */
St = (struttura *)malloc(sizeof(struttura));
St->file=fp;
St->stato=APERTO; // all'inizio APERTO di default
St->x=1; // valore iniziale di default
return 0;
}
or ail mio problema è che quando nel main vado a creare una variabile di tipo struttura e a usare la funzione, sembrerebbe che funziona..
int main() {
struttura *A;
int prova;
char *nomefile;
nomefile="testo.txt";
prova = nuovo(nomefile,A);
printf("%d\n",prova);
....
poi però quando vado a chiudere il file aperto nella funzione o a fare quasi qualsiasi altra cosa mi da un errore di SEGMENATION DEFAULT.
essendo io un dilettante non so cosa pensare. Sbaglio nell'allocare la memoria? Devo iniziallizzare l'oggetto di tipo struttura in maniera diversa?
Help!![]()