Freigeben über


fread

Liest Daten aus einem Stream.

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

Parameter

  • buffer
    Speicherort für Daten.

  • size
    Elementgröße in Bytes.

  • count
    Maximale Anzahl zu lesende Elemente.

  • stream
    Zeiger zur FILE-Struktur.

Rückgabewert

fread gibt die Anzahl der tatsächlich gelesen vollständigen Elementen zurück, die möglicherweise kleiner sind als count, wenn ein Fehler auftritt, oder wenn das Ende der Datei vor erreichendem count erreicht wird . Verwenden Sie die feofferror oder Funktion, um einen Lesefehler von einer Dateiende-Bedingung zu unterscheiden. Wenn size oder count 0 ist, gibt fread 0 zurück und den Pufferinhalt ist unverändert. Wenn stream oder buffer ein NULL-Zeiger ist, ruft fread den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, Sätze errno dieser Funktion zu EINVAL und zu gibt 0 zurück.

Weitere Informationen zu diesen und anderen Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die fread-Funktion liest bis count-Elemente von size Bytes von der Eingabe stream und speichert sie in buffer*.* Der Dateizeiger, der stream zugeordnet ist (sofern eines vorhanden ist), wird durch die Anzahl von Bytes gelesen tatsächlich verbessert. Wenn der angegebene im Stream Textmodus geöffnet ist, werden Wagenrücklauf/Zeilenvorschub-Paare durch einzelne Zeilenvorschubzeichen ersetzt. Die Ersetzung hat keine Auswirkungen auf der Dateizeiger oder Rückgabewert. Die Dateizeigerposition ist unbestimmt, wenn ein Fehler auftritt. Der Wert eines teilweise Leseelements kann nicht bestimmt werden.

Diese Funktion sperrt out andere Threads. Wenn Sie eine nicht sperrende Version benötigen, verwenden Sie _fread_nolock.

Anforderungen

Funktion

Erforderlicher Header

fread

<stdio.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

.NET Framework-Entsprechung

System::IO::FileStream::Read

Siehe auch

Referenz

Stream-E/A

fwrite

_read