Partager via


fread

Lit les données à partir d'un flux.

size_t fread( 
   void *buffer,
   size_t size,
   size_t count,
   FILE *stream 
);

Paramètres

  • buffer
    Emplacement de stockage pour les données.

  • size
    Taille d'élément en octets.

  • count
    Nombre maximal d'éléments à lire.

  • stream
    Pointeur vers la structure FILE.

Valeur de retour

fread retourne le nombre d'éléments complets lus réellement, qui peuvent être moins que count si une erreur se produit ou si la fin du fichier est rencontrée avant d'atteindre countd*.* Utilisez la fonction feof ou ferror pour distinguer une erreur de lecture d'une condition de fin du fichier. Si size ou count est 0, fread retourne 0 et le contenu de la mémoire tampon reste inchangé. Si stream ou buffer est un pointeur null, fread appelle le gestionnaire de paramètres non valides, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction définit errno à la valeur EINVAL et retourne 0.

Consultez _doserrno, errno, _sys_errlist et _sys_nerr pour plus d'informations sur ces éléments et autres codes d'erreur.

Notes

La fonction fread lit jusqu'à count les éléments des octets size de l'entrée stream et les stocke dans buffer*.* Le pointeur de fichier associé à stream (s'il y en a un) est augmenté par le nombre d'octets réellement lus. Si le flux de données spécifié est ouvert en mode texte, les paires saut de ligne-retour chariot sont remplacées par des caractères de saut de ligne. Le remplacement n'a aucun effet sur le pointeur de fichier ou la valeur de retour. La position du pointeur de fichier est indéterminée si une erreur se produit. La valeur d'un élément partiellement lu ne peut pas être déterminée.

Cette fonction verrouille d'autres threads. Si vous avez besoin d'une version non verrouillante, utilisez _fread_nolock.

Configuration requise

Fonction

En-tête requis

fread

<stdio.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

// crt_fread.c
// This program opens a file named FREAD.OUT and
// writes 25 characters to the file. It then tries to open
// FREAD.OUT and read in 25 characters. If the attempt succeeds,
// the program displays the number of actual items read.
 
#include <stdio.h>

int main( void )
{
   FILE *stream;
   char list[30];
   int  i, numread, numwritten;

   // Open file in text mode:
   if( fopen_s( &stream, "fread.out", "w+t" ) == 0 )
   {
      for ( i = 0; i < 25; i++ )
         list[i] = (char)('z' - i);
      // Write 25 characters to stream 
      numwritten = fwrite( list, sizeof( char ), 25, stream );
      printf( "Wrote %d items\n", numwritten );
      fclose( stream );

   }
   else
      printf( "Problem opening the file\n" );

   if( fopen_s( &stream, "fread.out", "r+t" ) == 0 )
   {
      // Attempt to read in 25 characters 
      numread = fread( list, sizeof( char ), 25, stream );
      printf( "Number of items read = %d\n", numread );
      printf( "Contents of buffer = %.25s\n", list );
      fclose( stream );
   }
   else
      printf( "File could not be opened\n" );
}
  

Équivalent .NET Framework

System::IO::FileStream::Read

Voir aussi

Référence

E/S de flux

fwrite

_read