2013-09-03 19 views
7

Mam 2 wymiarową macierz:Jak napisać tablicę do pliku w C

char clientdata[12][128]; 

Jaki jest najlepszy sposób, aby zapisać zawartość do pliku? Muszę ciągle aktualizować ten plik tekstowy, więc przy każdym zapisie poprzednie dane w pliku są wyczyszczone.

+3

Czy to ma być plik tekstowy czytelny dla człowieka? – dasblinkenlight

+0

Czy są to numery danych? Smyczki? Co tu się dzieje? Czy możesz pokazać przykład danych i jak ma wyglądać ten plik? –

+0

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

Odpowiedz

24

Ponieważ wielkość danych jest stały, jeden prosty sposób pisania całą tę tablicę do pliku używa binarny tryb zapisu:

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

to pisze się cały 2D tablicy naraz, pisanie na zawartość pliku, który był tam wcześniej.

+0

Jak mogę odczytać dane klienta z pliku po zapisaniu? – mugetsu

+2

Używasz 'FILE * ifp = fopen (" client.data "," rb "); fread (clientdata, sizeof (char), sizeof (clientdata), ifp); 'i dodaj sprawdzanie błędów. –

+4

Działa to w różnych typach maszyn, ponieważ dane są danymi znakowymi. Gdyby było to "int", to znaczy, że dane nie byłyby przenośne pomiędzy maszynami wielko-endyjskimi i małogatymi. –

0

Wolałbym dodać test, aby był solidny! fclose() odbywa się zarówno w przypadkach, w przeciwnym razie system plików uwolni deskryptor

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); 
Powiązane problemy