_write

파일에 데이터를 씁니다.

구문

int _write(
   int fd,
   const void *buffer,
   unsigned int count
);

매개 변수

fd
데이터를 쓸 파일의 파일 설명자입니다.

buffer
쓸 데이터입니다.

count
바이트 수입니다.

반환 값

성공 _write 하면 기록된 바이트 수를 반환합니다. 디스크의 실제 공간 기본 함수가 디스크에 쓰려는 버퍼 크기보다 작으면 실패하고 버퍼의 내용을 디스크 _write 에 플러시하지 않습니다. 반환 값 -1은 오류를 나타냅니다. 잘못된 매개 변수가 전달되면 이 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 실행을 계속할 수 있는 경우 함수는 -1을 반환하고 errno 세 가지 값 EBADF중 하나로 설정됩니다. 즉, 파일 설명자가 잘못되었거나 파일을 쓰기 ENOSPC위해 열리지 않습니다. 즉, 작업에 사용할 공간이 부족합니다. 즉EINVAL, null 포인터이거나 count 홀수 바이트가 유니코드 모드로 전달되었음을 의미 buffer 합니다.

이러한 코드 및 기타 반환 코드에 대한 자세한 내용은 , _doserrno_sys_nerr_sys_errlist를 참조하세요.errno

파일이 텍스트 모드로 열리면 각 줄 바꿈 문자가 출력에서 캐리지 리턴 라인 피드 쌍으로 바뀝 있습니다. 대체는 반환 값에 영향을 주지 않습니다.

파일을 유니코드 변환 모드로 열 때fd(예: 사용 또는 _sopen 모드 매개 변수를 포함하는 _O_WTEXT_O_U16TEXT모드 매개 변수를 _O_U8TEXT_open 거나, 사용 fopen 으로 열거나, ccs=UTF-16LE모드 매개 변수를 포함하는 ccs=UNICODE모드 매개 변수를 열거나ccs=UTF-8, 또는 모드를 사용하여 _setmode유니코드 변환 모드로 변경된 경우)buffer는 데이터가 포함된 UTF-16 배열 wchar_t 에 대한 포인터로 해석됩니다. 이 모드에서 홀수 바이트를 쓰려고 하면 매개 변수 유효성 검사 오류가 발생합니다.

설명

_write 함수는 count에서 buffer와 연결된 파일로 fd 바이트를 씁니다. 쓰기 작업은 지정된 파일과 연결된 파일 포인터(있는 경우)의 현재 위치에서 시작됩니다. 추가의 목적으로 파일을 연 경우 쓰기 작업은 파일의 현재 끝에서 시작됩니다. 쓰기 작업 후에는 파일 포인터가 기록된 바이트 수만큼 증가합니다.

텍스트 모드 _write 에서 열린 파일에 쓸 때 Ctrl+Z 문자를 파일의 논리적 끝으로 처리합니다. 디바이스 _write 에 쓸 때 버퍼의 Ctrl+Z 문자를 출력 종결자로 처리합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
_write <io.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// crt__write.c
//
// This program opens a file for output and uses _write to write
// some bytes to the file.

#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>

char buffer[] = "This is a test of '_write' function";

int main( void )
{
   int         fileHandle = 0;
   unsigned    bytesWritten = 0;

   if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
                  _SH_DENYNO, _S_IREAD | _S_IWRITE) )
      return -1;

   if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
   {
      switch(errno)
      {
         case EBADF:
            perror("Bad file descriptor!");
            break;
         case ENOSPC:
            perror("No space left on device!");
            break;
         case EINVAL:
            perror("Invalid parameter: buffer was NULL!");
            break;
         default:
            // An unrelated error occurred
            perror("Unexpected error!");
      }
   }
   else
   {
      printf_s( "Wrote %u bytes to file.\n", bytesWritten );
   }
   _close( fileHandle );
}
Wrote 36 bytes to file.

참고 항목

하위 수준 I/O
fwrite
_open, _wopen
_read
_setmode