fread
|
Défini dans l'en-tête
<stdio.h>
|
||
| (jusqu'à C99) | ||
| (depuis C99) | ||
Lit jusqu'à count objets dans le tableau buffer depuis le flux d'entrée donné stream comme en appelant fgetc size fois pour chaque objet, et stocke les résultats, dans l'ordre obtenu, dans les positions successives de buffer , qui est réinterprété comme un tableau de unsigned char . L'indicateur de position du fichier pour le flux est avancé du nombre de caractères lus.
Si une erreur se produit, la valeur résultante de l'indicateur de position du fichier pour le flux est indéterminée. Si un élément partiel est lu, sa valeur est indéterminée.
Table des matières |
Paramètres
| buffer | - | pointeur vers le tableau où les objets lus sont stockés |
| size | - | taille de chaque objet en octets |
| count | - | nombre d'objets à lire |
| stream | - | flux à lire |
Valeur de retour
Nombre d'objets lus avec succès, qui peut être inférieur à count si une erreur ou une condition de fin de fichier se produit.
Si
size
ou
count
est zéro,
fread
renvoie zéro et n'effectue aucune autre action.
fread
ne fait pas de distinction entre la fin de fichier et l'erreur, et les appelants doivent utiliser
feof
et
ferror
pour déterminer ce qui s'est produit.
Exemple
#include <stdio.h> enum { SIZE = 5 }; int main(void) { const double a[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; printf("Array has size %ld bytes, element size: %ld\n", sizeof a, sizeof *a); FILE *fp = fopen("test.bin", "wb"); // must use binary mode fwrite(a, sizeof *a, SIZE, fp); // writes an array of doubles fclose(fp); double b[SIZE]; fp = fopen("test.bin","rb"); const size_t ret_code = fread(b, sizeof b[0], SIZE, fp); // reads an array of doubles if (ret_code == SIZE) { printf("Array at %p read successfully, contents:\n", (void*)&a); for (int n = 0; n != SIZE; ++n) printf("%f ", b[n]); putchar('\n'); } else // error handling { if (feof(fp)) printf("Error reading test.bin: unexpected end of file\n"); else if (ferror(fp)) perror("Error reading test.bin"); } fclose(fp); }
Sortie possible :
Array has size 40 bytes, element size: 8 Array at 0x1337f00d6960 read successfully, contents: 1.000000 2.000000 3.000000 4.000000 5.000000
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.21.8.1 La fonction fread (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.21.8.1 La fonction fread (p: 243-244)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.21.8.1 La fonction fread (p: 335)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.19.8.1 La fonction fread (p: 301)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.9.8.1 La fonction fread
Voir aussi
|
(C11)
(C11)
(C11)
|
lit une entrée formatée depuis
stdin
, un flux de fichier ou un tampon
(fonction) |
|
obtient une chaîne de caractères depuis un flux de fichier
(fonction) |
|
|
écrit dans un fichier
(fonction) |
|
|
Documentation C++
pour
fread
|
|