_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
잘못된 buffer_size
>INT_MAX
매개 변수 처리기가 호출됩니다.NULL
계속 실행하도록 허용된 경우 함수는 -1을 반환하고 errno
는 EINVAL
로 설정됩니다.
이 코드 및 기타 반환 코드에 대한 자세한 내용은 , _doserrno
및 _sys_nerr
_sys_errlist
를 참조하세요.errno
설명
함수는 _read
연결된 fd
파일에서 최대 buffer_size
바이트를 buffer
읽습니다. 읽기 작업은 지정된 파일과 연결된 파일 포인터의 현재 위치에서 시작됩니다. 읽기 작업 후 파일 포인터는 읽지 않은 다음 문자를 가리킵니다.
파일을 텍스트 모드에서 연 경우 _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