私は2次元のマトリックスを持っています:
char clientdata[12][128];
内容をファイルに書き込む最良の方法は何ですか?このテキストファイルを常に更新する必要があるため、書き込みのたびに、ファイル内の以前のデータが消去されます。
データのサイズは固定されているため、この配列全体をファイルに書き込む簡単な方法の1つは、バイナリ書き込みモードを使用することです。
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/