2013-09-03 19 views
7

ho una matrice 2 dimensionale:Come scrivere una serie di file in C

char clientdata[12][128]; 

Qual è il modo migliore per scrivere il contenuto in un file? Ho bisogno di aggiornare costantemente questo file di testo in modo tale che su ogni scrittura i dati precedenti nel file vengano cancellati.

+3

Questo dovrebbe essere un file di testo leggibile? – dasblinkenlight

+0

I numeri di dati? Stringhe? Cosa sta succedendo qui? Puoi mostrare un esempio dei dati e come vuoi che sia il file? –

+0

Duplicato di: http://stackoverflow.com/questions/4638568/write-2d-array-to-a-file-in-c – sara

risposta

24

Poiché la dimensione dei dati è fisso, in un modo semplice di scrivere questo intero array in un file sta usando la modalità di scrittura binaria:

FILE *f = fopen("client.data", "wb"); 
fwrite(clientdata, sizeof(char), sizeof(clientdata), f); 
fclose(f); 

Questo scrive l'intero array 2D in una volta, la scrittura su il contenuto del file che è stato lì in precedenza.

+0

come faccio a leggere i dati del client dal file dopo la scrittura? – mugetsu

+2

Si utilizza 'FILE * ifp = fopen (" client.data "," rb "); fread (clientdata, sizeof (char), sizeof (clientdata), ifp); 'e aggiungi la verifica degli errori. –

+4

Funziona su tutti i tipi di macchina perché i dati sono dati carattere. Se fosse 'int', per esempio, i dati non sarebbero portatili tra le macchine big-endian e little-endian. –

0

Vorrei aggiungere un test per renderlo robusto! Il fclose() è fatto in entrambi i casi altrimenti il ​​file system libererà il file descrittore

int written = 0; 
FILE *f = fopen("client.data", "wb"); 
written = fwrite(clientdata, sizeof(char), sizeof(clientdata), f); 
if (written == 0) { 
    printf("Error during writing to file !"); 
} 
fclose(f); 
Problemi correlati