Поделиться через


fread

Читает данные из потока.

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

Параметры

  • buffer
    Место хранения данных.

  • size
    Размер элемента в байтах.

  • count
    Максимальное количество элементов, которые требуется прочитать.

  • stream
    Указатель на структуру FILE.

Возвращаемое значение

fread возвращает число полных фактически прочитанных элементов, которое может быть меньше count при возникновении ошибки или при достижении конца файла до count*.* Используйте функцию feof или ferror для того, чтобы отличить ошибку чтения от конца файла. Если size или count равны 0, fread возвращает 0 и не меняет содержимое буфера. Если stream или buffer является пустым указателем, fread вызывает обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если продолжение выполнения разрешено, эта функция устанавливает errno в значение EINVAL и возвращает 0.

См. раздел _doserrno, errno, _sys_errlist, and _sys_nerr для дополнительных сведений по этим и другим кодам возврата.

Заметки

Функция fread считывает до count элементов размером size байт из входного stream и сохраняет их в buffer*.* Указатель файла, связанный с stream (если такой есть), увеличивается на число фактически считанных байтов. Если данный поток открыт в текстовом режиме, пары возврата каретки-перевода строки заменяются одиночными символами перевода строки. Замена не влияет на указатель файла или возвращаемое значение. Положение файлового указателя не определено при возникновении ошибки. Значение частично прочитанного элемента невозможно определить.

Эта функция блокирует работу других потоков. Если требуется неблокирующая версия, используйте _fread_nolock.

Требования

Функция

Обязательный заголовок

fread

<stdio.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

// 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

System::IO::FileStream::Read

См. также

Ссылки

Потоковый ввод-вывод

fwrite

_read