Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    27

    [C] leggere da file su unix

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

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    27
    Up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.