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


fread

Считывает данные из потока.

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

Параметры

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

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

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

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

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

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

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

Заметки

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

Эта функция ожидания блокирует другие потоки.Если необходима версия, используйте non-блокируя _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:: Ввода-вывода:: FileStream:: Чтение

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

fwrite

_read