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


_read

Считывает данные из файла.

int _read( 
   int fd, 
   void *buffer, 
   unsigned int count  
);

Параметры

  • fd
    Дескриптор файла, ссылающийся на открытый файл.

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

  • count
    Максимальное число байтов.

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

_read возвращает количество прочитанных байтов, которое может быть меньше, чем count, если в файле осталось меньше, чем count, байтов или если файл открыт в текстовом режиме, так как в этом случае каждая пара символов возврата каретки и новой строки (CR-LF) заменяется одним символом перевода строки. Единственный символ перевода строки учитывается в возвращаемом значении. Замена не влияет на указатель файла.

Если функция пытается считать в конце файла, она возвращает 0. Если fd недопустим, файл не открыт для чтения или файл блокирован, вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, функция возвращает -1 и устанавливает errno в значение EBADF.

Если параметр buffer имеет значение NULL, вызывается обработчик недопустимых параметров. Если выполнение может продолжиться, функция возвращает -1 и устанавливает errno в EINVAL

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

Заметки

Функция _read считывает максимальное count байтов в buffer из файла, связанного с fd. Операция чтения начинается в текущей позиции указателя файла, связанного с указанным файлом. После операции чтения указатель файла указывает на следующий непрочитанный символ.

Если файл открыт в текстовом режиме, чтение заканчивается, когда _read встречает символ CTRL+Z, который обрабатывается как индикатор конца файла. Используйте _lseek, чтобы очистить индикатор конца файла.

Требования

Подпрограмма

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

_read

<io.h>

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

Библиотеки

Все версии библиотек времени выполнения C.

Пример

// crt_read.c
/* This program opens a file named crt_read.txt
 * and tries to read 60,000 bytes from
 * that file using _read. It then displays the
 * actual number of bytes read.
 */

#include <fcntl.h>      /* Needed only for _O_RDWR definition */
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>

char buffer[60000];

int main( void )
{
   int fh;
   unsigned int nbytes = 60000, bytesread;

   /* Open file for input: */
   if( _sopen_s( &fh, "crt_read.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
   {
      perror( "open failed on input file" );
      exit( 1 );
   }

   /* Read in input: */
   if( ( bytesread = _read( fh, buffer, nbytes ) ) <= 0 )
      perror( "Problem reading file" );
   else
      printf( "Read %u bytes from file\n", bytesread );

   _close( fh );
}

Входные данные: crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

См. также

Ссылки

Низкоуровневый ввод-вывод

_creat, _wcreat

fread

_open, _wopen

_write