2013-06-08 16 views
18

E 'possibile scrivere un intero struct in un filescrittura Structs in un file in c

esempio:

struct date { 
    char day[80]; 
    int month; 
    int year; 
}; 
+9

sì ................. –

+0

Leggete anche questo: [come scrivere struct in un file in c] (http://www.codingunit.com/c-tutorial-binary-file-io) –

risposta

26

E' possibile scrivere un intero struct in un file

La tua domanda è in realtà la scrittura di istanze struct in file.

  1. È possibile utilizzare la funzione fwrite per ottenere ciò.
  2. È necessario passare il riferimento nel primo argomento.
  3. sizeof ogni oggetto nel secondo argomento
  4. Numero di tali oggetti da scrivere in 3o argomento.
  5. Puntatore del file nel quarto argomento.
  6. Non dimenticare di aprire il file in binary mode.
  7. È possibile leggere gli oggetti dal file utilizzando il tasto.
  8. Attento con endianness quando si scrive/legge in sistemi little endian e si legge/scrive in sistemi big endian e viceversa. Leggi how-to-write-endian-agnostic-c-c-code

    struct date *object=malloc(sizeof(struct date)); 
    strcpy(object->day,"Good day"); 
    object->month=6; 
    object->year=2013; 
    FILE * file= fopen("output", "wb"); 
    if (file != NULL) { 
        fwrite(object, sizeof(struct date), 1, file); 
        fclose(file); 
    } 
    

Li può leggere nello stesso modo .... utilizzando fread

struct date *object2=malloc(sizeof(struct date)); 
    FILE * file= fopen("output", "rb"); 
    if (file != NULL) { 
     fread(object2, sizeof(struct date), 1, file); 
     fclose(file); 
    } 
    printf("%s/%d/%d\n",object2->day,object2->month,object2->year); 
+1

deve anche fare attenzione con il riempimento della struttura almeno –

+0

I ho anche scritto alcuni oggetti C nel file e voglio leggerli di nuovo ed elaborarli. Ma, non so quali oggetti sono stati scritti in un file, potrebbe essere qualsiasi, quindi, in fright, non saprei sizeof() dell'oggetto che ho letto. Inoltre, come leggere esattamente un obiettivo alla volta? In che modo Fread può conoscere l'inizio e la fine dei byte in un file che rappresenta i limiti dell'oggetto? –

+0

Suppongo, se questo è il caso, dovrebbe esserci una struttura per il file, ad esempio, diciamo che scrivi il tipo in una riga e l'oggetto in un'altra riga, ecc. Quindi dal programma in base al tipo puoi conoscere il dimensione.. – pinkpanther