fwrite() : Recopie des octets, de la mémoire vers un fichier ouvert
Prototype:
size_t fwrite ( (void *) ptr, size_t t1, size_t nbe, File * fic)
dans: <stdio.h>
Description:
fwrite() est une procédure d'écriture sur fichier qui ne fait aucune interprétation des octets à transmettre.
Les fichiers de valeur numérique créés par fwrite() sont lisibles en utilisant fread(); il faut de plus que les machines sur lesquelles se font lecture et écriture aient la même représentation des nombres.
Les arguments sont:
- ptr indique l'adresse du premier octet de la zone mémoire à recopier
- t1 et nbe définissent la taille de la zone à transmettre, qui vaut exactement en octets: t1*nbe
- fic est l'adresse servant à identifier le flux, qui doit avoir été correctement ouvert en écriture, avant d'utiliser fwrite
Valeur renvoyée:
- le nombre d'éléments transmis (nbe) s'il n'y a pas eu d'erreur
Voir aussi:
Portabilité:
Exemple:
/*
Double écriture par fwrite d'un tableau:
une fois en une seule instruction (transmission de 10
doubles soit 80 octets);
une autre fois en transmettant élément par élément
(10 transmission de 8 octets)
Le fichier constitué contient 160 octets
*/
#include
int main (void) {
FILE * ficEcr;
double td[10]; int i, nbo;
/* Ouverture d'un fichier */
ficEcr = fopen( "fwrite.ex", "wb");
if( ficEcr==NULL ) {
printf("\nErreur création de %s\n", "fwrite.ex"); exit(2);
}
/* Remplissage du tableau */
for( i=0; i<10; i++) td[i]= i*i;
/* Ecriture en une seule instruction */
nbo = fwrite( td, sizeof(double), 10, ficEcr);
printf("%d éléments écrits sur %s\n", nbo, "fwrite.ex");
/* Ecriture du tableau en 10 transmissions */
for( i=0; i<10; i++) fwrite( &td[i], sizeof(double), 1, ficEcr);
fclose( ficEcr);
return 0;
}