Problema: ho un file "mappa" contenente momentaneamente una colonna di 0. Vorrei che il mio programma leggesse da questo file carattere per carattere e memorizzasse il valore incontrato nel campo pos[i].codice. A seconda che il valore sia uguale o diverso da zero il programma dovrebbe comportarsi diversamente. Il problema è che il programma non memorizza gli 0, bensì dei numeri assurdi!! Dov'è l'errore?
codice:
typedef struct {
int numfila;
int flag;
int codice;
}
int main(int argc, char *argv[]) {
int aperto, chiuso, i;
posto pos[DIM]; //dim l'ho inizializzata a 6
aperto=open("mappa",O_RDONLY);
if(aperto==-1) {
printf("non ha aperto\n");
exit(1);
}
for(i=0;i<DIM;i++) {
pos[i].numfila=i;
letto=read(aperto,&(pos[i].flag),1);
if(letto==-1) {
printf("non ha letto\n");
exit(1);
}
if(pos[i].flag!=0) {
letto=read(aperto,&(pos[i].codice),4);
printf("pos[%d].codice(flag=0)= %d\n",i,pos[i].codice);
}
else {
pos[i].codice=-1;
printf("pos[%d].codice(flag!=0)=%d\n",i,pos[i].codice);
}
}
chiuso=close(aperto);
if(chiuso==-1) {
printf("non ha chiuso\n");
exit(1);
}
exit(0);
}
Premetto che le varie printf servono per capire cosa accade. Le varie include non le ho riportate ma non sono loro il problema perchè a compilare compila. Suppongo che sia da rivedere questa linea:
codice:
letto=read(aperto,&(pos[i].flag),1);
ma ho provato a fare migliaia di modifiche (ad es. ho sostituito pos[i].flag con un array di caratteri. Stesso discorso, non leggeva niente...) e non sono venuto a capo di nulla!
aiutatemi plz!!!!