web-dev-qa-db-fra.com

Comment écrire un tableau à déposer en C

J'ai une matrice en 2 dimensions:

char clientdata[12][128];

Quel est le meilleur moyen d'écrire le contenu dans un fichier? Je dois constamment mettre à jour ce fichier texte afin que toutes les données précédentes soient effacées à chaque écriture.

10
mugetsu

Puisque la taille des données est fixe, une manière simple d'écrire tout ce tableau dans un fichier consiste à utiliser le mode d'écriture binaire:

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

Ceci écrit tout le tableau 2D à la fois, écrivant par dessus le contenu du fichier qui était là auparavant.

29
dasblinkenlight

Je préférerais ajouter un test pour le rendre robuste! La fonction fclose () est effectuée dans les deux cas, sinon le système de fichiers libère le descripteur de fichier. 

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);
0
Mohamed ROMDANE

Incroyablement simple, ce problème s’est avéré être .... L’exemple donné ci-dessus traite les caractères, voici comment gérer un tableau d’entiers ... 

/* 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. */

Pour tous ceux qui recherchent des conseils sur la programmation C, ce site est excellent ...

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

0
user3359049