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?
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: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); }
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!codice:letto=read(aperto,&(pos[i].flag),1);
aiutatemi plz!!!!

Rispondi quotando
