_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