Condividi tramite


fread

Legge i dati da un flusso.

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

Parametri

  • buffer
    Percorso di archiviazione per i dati.

  • size
    Dimensione dell'elemento in byte.

  • count
    Numero massimo di elementi da leggere.

  • stream
    Puntatore alla struttura FILE.

Valore restituito

fread restituisce il numero di elementi attualmente letti, che può essere inferiore a count se si verifica un errore o se la fine del file viene rilevata prima di raggiungere count*.* Utilizzare la funzione ferror o feof per distinguere un errore di lettura da uno stato di fine file. Se size o count è 0, fread restituisce 0 e il contenuto del buffer resta invariato. Se stream o buffer sono un puntatore null, fread richiama il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno a EINVAL e restituisce 0 .

Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questi, e altri, codici di errore.

Note

La funzione fread legge il count degli oggetti di size byte dall'input stream e li memorizza in buffer*.* Il puntatore del file associato allo stream (se presente) viene incrementato del numero di byte effettivamente letti. Se il flusso specificato viene aperto in modalità testo, le coppie di avanzamento riga di ritorno vengono sostituite con i singoli caratteri di avanzamento riga. La sostituzione non ha effetto sul puntatore del file o il valore restituito. La posizione del puntatore del file è indeterminata se si verifica un errore. Non può essere specificato il valore di un elemento parzialmente letto.

Questa funzione viene bloccata da altri thread. Se è necessaria una versione non bloccante, utilizzare _fread_nolock.

Requisiti

Funzione

Intestazione obbligatoria

fread

<stdio.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Esempio

// 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" );
}
  

Equivalente .NET Framework

System::IO::FileStream::Read

Vedere anche

Riferimenti

I/O di flusso

fwrite

_read