std:: fread
|
Défini dans l'en-tête
<cstdio>
|
||
|
std::
size_t
fread
(
void
*
buffer,
std::
size_t
size,
std::
size_t
count,
std::
FILE
*
stream
)
;
|
||
Lit jusqu'à count objets dans le tableau buffer depuis le flux d'entrée donné stream comme en appelant std::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 les objets ne sont pas TriviallyCopyable , le comportement est indéfini.
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 premier objet du tableau à lire |
| size | - | taille de chaque objet en octets |
| count | - | nombre d'objets à lire |
| stream | - | flux de fichier en entrée depuis lequel 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 fin de fichier et erreur, et les appelants doivent utiliser
std::feof
et
std::ferror
pour déterminer ce qui s'est produit.
Exemple
#include <cstddef> #include <cstdio> #include <fstream> #include <iomanip> #include <iostream> #include <vector> int main() { // Préparer le fichier std::ofstream("test.txt") << 1 << ' ' << 2 << '\n'; std::FILE* f = std::fopen("test.txt", "r"); std::vector<char> buf(4); // char est trivialement copiable const std::size_t n = std::fread(&buf[0], sizeof buf[0], buf.size(), f); std::cout << "Lu " << n << " objet" << (n > 1 ? "s" : "") << " : " << std::hex << std::uppercase << std::setfill('0'); for (char n : buf) std::cout << "0x" << std::setw(2) << static_cast<short>(n) << ' '; std::cout << '\n'; std::vector<std::string> buf2; // string n'est pas trivialement copiable // Cela résulterait en un comportement indéfini : // std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f); }
Sortie possible :
Lu 4 objets : 0x31 0x20 0x32 0x0A
Voir aussi
|
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
|
|