Как записать массив в файл в C

У меня есть 2-мерная матрица:

char clientdata[12][128];

каков наилучший способ записи содержимого в файл? Мне нужно постоянно обновлять этот текстовый файл, чтобы при каждой записи предыдущие данные в файле очищались.

3 ответов


поскольку размер данных фиксирован, одним из простых способов записи всего массива в файл является использование режима двоичной записи:

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

это записывает весь 2D-массив сразу, записывая содержимое файла, который был там ранее.


Я бы лучше добавить тест, чтобы сделать его надежным ! Fclose () выполняется в любом случае, иначе файловая система освободит файловый дескриптор

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);

насколько невероятно простой оказалась эта проблема... Пример, приведенный выше, обрабатывает символы, это то, как обрабатывать массив целых чисел...

/* define array, counter, and file name, and open the file */
int unsigned n, prime[1000000];
FILE *fp;
fp=fopen("/Users/Robert/Prime/Data100","w");
prime[0] = 1;  /* fist prime is One, a given, so set it */
/* do Prime calculation here and store each new prime found in the array */
prime[pn] = n; 
/* when search for primes is complete write the entire array to file */
fwrite(prime,sizeof(prime),1,fp); /* Write to File */

/* To verify data has been properly written to file... */
fread(prime,sizeof(prime),1,fp); /* read the entire file into the array */
printf("Prime extracted from file Data100: %10d \n",prime[78485]); /* verify data written */
/* in this example, the 78,485th prime found, value 999,773. */

для тех, кто ищет руководство по программированию на C, то этот сайт отличный...

см.: [https://overiq.com/c-programming/101/fwrite-function-in-c/