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!!!!