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


_read

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

Синтаксис

int _read(
   int const fd,
   void * const buffer,
   unsigned const buffer_size
);

Параметры

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

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

buffer_size
Максимальное число байтов для чтения.

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

_read возвращает количество операций чтения байтов, которое может быть меньше buffer_size buffer_size байтов, оставшихся в файле, или если файл был открыт в текстовом режиме. В текстовом режиме каждая пара \r\n канала возврата каретки заменяется одним символом \nканала строки. В возвращаемом значении учитывается только символ одного канала строки. Замена не влияет на указатель файла.

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

Если buffer задано NULLзначение или buffer_size>INT_MAXесли вызывается недопустимый обработчик параметров. Если продолжение выполнения разрешено, функции возвращают значение −1 и задают для errno значение EINVAL.

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

Замечания

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

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

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок
_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, bytesread;
   unsigned int nbytes = 60000;

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

Выходные данные

Read 19 bytes from file

См. также

Низкоуровневый ввод-вывод
_creat, _wcreat
fread
_open, _wopen
_write