Salve, devo scrivere la seguente funzione per leggere i dati da file:
Si scriva una funzione che legge dal file Prova3Dati.txt (fornito) dei dati relativi a una rilevazione di una centralina per il controllo climatico, da memorizzare in una struct allocata con malloc, il cui puntatore va inserito nell'array Dati, nella posizione corrispondente al codice identificativo della centralina da cui sono ricavati i dati. Se il codice della centralina e' superiore al valore massimo dell'indice dell'array (ad esempio 10 o 25, se l'array e' lungo 10 posizioni (indici da 0 a 9)), o se la posizione corrispondente e' gia' occupata, viene stampato a video un messaggio d'errore con tutti i dati, e questi non vengono inseriti. L'array ha al massimo 10 posizioni.
è ho scritto la seguente funzione ma non so se è giusta:
void leggiFile(char* nomefile,centralina *dati, int a)
{ centralina* centr= malloc(sizeof(centralina));
int Dati=10;
centralina* cent_n=malloc(Dati*sizeof(centralina));
FILE* file=fopen("Prova 3- Dati.txt", "r");
int i;
for(i=0;i<Dati;i++){
char TmP[15];
int res=fscanf(file,"%d %f %f %f %s %d %d %d",&(cent_n[i].cent),&(cent_n[i].temperatura),&(cent_n[i].umidita),&(cent_n[i].polveri_sottili),TmP,&(cent_n[i].giorno),&(cent_n[i].mese),&(cent_n[i].anno));
if(res==EOF)
{
break;
}
cent_n[i].giornosettimana[0]=ConvertiGiorno(TmP);
}
free(centr);
free(cent_n);
fclose(file);
}
E questa è la sstruct su cui salvare i dati::
ypedef enum {monday,tuesday,wednesday,thursday,friday,saturday,sunday}tipogiorno;
struct strcentralina{ int cent;
float temperatura;
float umidita;
float polveri_sottili;
int giorno;
int mese;
int anno;
tipogiorno giornosettimana;};
typedef struct strcentralina centralina;
l'esercizio poi continua però vorrei sapere se il codice va bene fino a qui,grazie in anticipo: