Sdílet prostřednictvím


fread_s

Čte data z datového proudu.Tato verze fread obsahuje rozšíření zabezpečení popsaným v Funkce zabezpečení v CRT.

size_t fread_s( 
   void *buffer,
   size_t bufferSize,
   size_t elementSize,
   size_t count,
   FILE *stream 
);

Parametry

  • buffer
    Umístění úložiště pro data.

  • bufferSize
    Velikost cílové vyrovnávací paměti v bajtech.

  • elementSize
    Velikost položky čtení v bajtech.

  • count
    Maximální počet položek ke čtení.

  • stream
    Ukazatel na FILE struktury.

Vrácená hodnota

fread_sVrací číslo (celé) položky, které byly čtení do vyrovnávací paměti, která může být menší než count Pokud je zjištěna chyba čtení nebo na konec souboru před count je dosaženo.Použití feof nebo ferror funkce odlišit od konce souboru podmínku chyby.Pokud size nebo count 0, fread_s vrátí 0 a obsah vyrovnávací paměti nezměněny.Pokud stream nebo buffer je nulový ukazatel fread_s vyvolá obsluhu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno pokračovat v provádění, tato funkce nastaví errno na EINVAL a vrátí hodnotu 0.

Další informace o chybových kódech naleznete v tématu _doserrno, kód chyby, _sys_errlist a _sys_nerr.

Poznámky

fread_s Funkce čte až count položky elementSize bajtů od vstupní stream a ukládá je v buffer.Ukazatel souboru, který je spojen s stream (pokud existuje) je zvýšen počet skutečně čtení bajtů.Daný datový proud je otevřen v textovém režimu, přepravu return–linefeed dvojice nahrazeny znaky konce řádku jeden.Nahrazení nemá žádný vliv na ukazatele souboru nebo vrácené hodnoty.Pozice ukazatele souboru je neurčité, pokud dojde k chybě.Nelze zjistit hodnotu částečně čtení položky.

Tato funkce uzamčení jiných podprocesů.Pokud požadujete verzi zamykání, _fread_nolock.

Požadavky

Function

Požadované záhlaví

fread_s

<stdio.h>

Další informace o kompatibilitě, viz Compatibility.

Příklad

// crt_fread_s.c
// Command line: cl /EHsc /nologo /W4 crt_fread_s.c
//
// This program opens a file that's named FREAD.OUT and
// writes characters to the file. It then tries to open
// FREAD.OUT and read in characters by using fread_s. If the attempt succeeds,
// the program displays the number of actual items read.
 
#include <stdio.h>

#define BUFFERSIZE 30
#define DATASIZE 22
#define ELEMENTCOUNT 2
#define ELEMENTSIZE (DATASIZE/ELEMENTCOUNT)
#define FILENAME "FREAD.OUT"

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

   for ( i = 0; i < DATASIZE; i++ )
      list[i] = (char)('z' - i);
   list[DATASIZE] = '\0'; // terminal null so we can print it
      
   // Open file in text mode:
   if( fopen_s( &stream, FILENAME, "w+t" ) == 0 )
   {
      // Write DATASIZE characters to stream 
      printf( "Contents of buffer before write/read:\n\t%s\n\n", list );
      numwritten = fwrite( list, sizeof( char ), DATASIZE, stream );
      printf( "Wrote %d items\n\n", numwritten );
      fclose( stream );
   } else {
      printf( "Problem opening the file\n" );
      return -1;
   }

   if( fopen_s( &stream, FILENAME, "r+t" ) == 0 )   {
      // Attempt to read in characters in 2 blocks of 11
      numread = fread_s( list, BUFFERSIZE, ELEMENTSIZE, ELEMENTCOUNT, stream );
      printf( "Number of %d-byte elements read = %d\n\n", ELEMENTSIZE, numread );
      printf( "Contents of buffer after write/read:\n\t%s\n", list );
      fclose( stream );
   } else {
      printf( "File could not be opened\n" );
      return -1;
   }
}
  
  
  
  
  
  

Viz také

Referenční dokumentace

Proud I/O

fwrite

_read