fread() : recopie des octets, d'un fichier ouvert, vers la mémoire
Prototype:
size_t fread(void *ptr, size_t t1, size_t nbe, FILE *fic);
dans: <stdio.h>
Description:
fread() est une procédure de lecture 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 recevant la copie
- 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 lecture, avant d'utiliser fread.
Valeur renvoyée:
Le nombre d'éléments transmis (nbe) s'il n'y a pas eu d'erreur.
La fin de fichier peut être atteinte avant que t1*nbe octets soient transmis; la valeur renvoyée indique alors le nombre réél d'éléments, qui est inférieur à nbe.
Voir aussi:
Portabilité:
Exemple:
/*
Lecture d'un tableau à partir d'un fichier de 160 octets
créé par un petit programme (voir fwrite).
La lecture est effectuée par une seule instruction
(transmission de 160 octets soient 20doubles)
*/
#include
int main (void) {
FILE * ficLec;
double td[30]; int i, nbo;
/* Ouverture d'un fichier */
ficLec = fopen( "fwrite.ex", "rb");
if( ficLec==NULL ) {
printf("\nErreur en lecture de %s\n", "fwrite.ex"); exit(2);
}
/* Lecture en une seule instruction */
nbo = fread( td, sizeof(double), 30, ficLec);
printf("%d éléments lus à partir de %s\n", nbo, "fwrite.ex");
for( i=0; i