다음을 통해 공유


_fdopen, _wfdopen

하위 수준 I/O에 대한 이전에 연 파일을 사용하여 스트림에 연결 합니다.

FILE *_fdopen(  
   int fd,
   const char *mode 
);
FILE *_wfdopen( 
   int fd,
   const wchar_t *mode 
);

매개 변수

  • fd
    열린 파일의 파일 설명자입니다.

  • mode
    파일 엑세스 형식

반환 값

각 함수는 열린 스트림에 대한 포인터를 반환합니다. null 포인터 값은 오류를 나타냅니다. 오류가 발생할 때, 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 실행이 계속되도록 허용 되는 경우 errno 는 잘못된 파일 설명자를 나타내는 EBADF 로 설정 되거나 또는 EINVAL 로 설정됩니다. 이 것은 mode 가 null 포인터임을 나타냅니다.

이러한 반환 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr을 참조하십시오.

설명

파일을 사용하여 I/O 스트림과 연결하는 _fdopen 함수는 fd 와 동일합니다. 따라서 하위 수준의 I/O 에 대해 열린 파일을 버퍼 시키거나 포맷할 수 있습니다. _wfdopen는 _fdopen의 와이드 문자 버전이며, _wfdopen의 mode 인수는 와이드 문자 문자열입니다. 그렇지 않으면 _wfdopen 및 _fdopen 는 동일하게 작동합니다.

제네릭 텍스트 라우팅 매핑

Tchar.h 루틴

_UNICODE 및 _MBCS 정의되지 않음

_MBCS 정의됨

_UNICODE 정의됨

_tfdopen

_fdopen

_fdopen

_wfdopen

mode 문자 문자열은 파일 및 파일 액세스 종류를 지정합니다.

mode 문자열은 아래의 표와 같이 파일에 대해 요청되는 액세스 형식을 지정합니다.

  • "r"
    읽기 위해 엽니다. 파일이 없거나 찾을 수 없는 경우 fopen 호출이 실패합니다.

  • "w"
    쓰기 위해 빈 파일을 엽니다. 지정한 파일이 있으면 이 파일의 내용은 삭제됩니다.

  • "a"
    (추가) 파일의 끝에 쓰기 위해 열립니다. 파일이 없는 경우 파일을 만듭니다.

  • "r+"
    읽고 쓰기 위해 엽니다. (파일이 존재 해야 합니다.)

  • "w+"
    읽고 쓰기 위해 빈 파일을 엽니다. 지정한 파일이 있으면 이 파일의 내용은 삭제됩니다.

  • "a+"
    읽고 추가하기 위해 엽니다. 파일이 없는 경우 파일을 만듭니다.

"a" 또는 "a+" 액세스 형식을 사용하여 파일을 연 경우 모든 쓰기 작업은 파일의 끝에서 수행됩니다. fseek 또는 rewind를 사용하여 파일 포인터의 위치를 변경할 수 있지만, 파일 포인터는 쓰기 작업을 수행하기 전에 항상 파일 끝으로 다시 이동합니다. 따라서 기존 데이터를 덮어쓸 수 없습니다. "r+", "w+" 또는 "a+" 액세스 형식을 지정한 경우 읽기와 쓰기가 모두 허용됩니다. 즉, 파일이 "업데이트"용으로 열립니다. 그러나 읽기 및 쓰기를 전환할 때 반드시fflush, fsetpos, fseek, 또는 rewind 연사자의 사이여야 합니다. fsetpos 또는 fseek 연산자에 대해 현재 위치를 지정할 수 있습니다.

이전 값 이외에 다음 문자를 mode에 추가하여 줄 바꿈 문자에 대한 변환 모드를 지정할 수 있습니다.

  • t
    텍스트(변환됨) 모드에서 엽니다. 이 모드에서 캐리지 리턴/줄 바꿈 (CR-LF) 조합은 입력에서 한 줄 바꿈(LF)으로 변환되고, 줄 바꿈 문자는 출력에서 캐리지 리턴/줄 바꿈 조합으로 변환됩니다. 또한, CTRL + Z는 입력에서 파일 끝 문자로 해석 됩니다. 읽기 및 쓰기에 대해 열린 파일에서 fopen 는 가능하면 파일의 끝에서 Ctrl+Z를 확인하고 제거합니다. fseek 및 ftell 함수를 사용하여 Ctrl+Z로 끝나는 파일 내에서 이동하면 파일의 끝 부분에서 fseek가 제대로 동작하지 않을 수 있으므로 이 작업을 수행합니다.

  • b
    이진(변환되지 않은) 모드에서 열립니다. t 모드의 모든 번역은 표시 되지 않습니다.

  • c
    fflush 또는 _flushall을 호출하면 파일 버퍼의 내용이 디스크에 직접 기록되도록 연결된 filename에 대한 커밋 플래그를 사용합니다.

  • n
    연결된 filename에 대한 커밋 플래그를 "커밋 안 함"으로 다시 설정합니다. 이 값이 기본값입니다. 또한 Commode.obj와 프로그램을 연결하면 전역 커밋 플래그를 재정의 합니다. 프로그램을 Commode.obj와 명시적으로 연결하지 않을 경우 전역 커밋 플래그 기본값은 "커밋 안 함"입니다.

t, c, 및 n mode 옵션은 fopen 및 _fdopen 에 대한 Microsoft 확장명입니다. ANSI 이식성을 유지 하려는 경우 사용할 수 없습니다.

t 또는 b가 mode에 지정되지 않은 경우, 기본 변환 모드는 전역 변수 _fmode로 정의됩니다. t 또는 b가 인수에 접두어로 추가되면 이 함수는 실행되지 못하고 NULL을 반환합니다. 텍스트 및 이진 모드의 논의는 텍스트 및 이진 모드 파일 I/O 를 참조하십시오.

다음 fopen 및 _fdopen 에 사용되는 문자열 mode 에 유효한 문자는 _open_sopen와 같이 인수에 사용되는 oflag 와 일치합니다.

mode 문자열 안의 문자

oflag 값은 _open/_sopen 와 동등합니다.

a

_O_WRONLY | _O_APPEND(일반적으로 _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (일반적으로 _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY(일반적으로 _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR(일반적으로 _O_RDWR | _O_CREAT | _O_TRUNC)

b

_O_BINARY

t

_O_TEXT

c

없음

n

없음

요구 사항

Function

필수 헤더

_fdopen

<stdio.h>

_wfdopen

<stdio.h> 또는 <wchar.h>

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

예제

// crt_fdopen.c
// This program opens a file by using low-level
// I/O, then uses _fdopen to switch to stream
// access. It counts the lines in the file.


#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>

int main( void )
{
   FILE *stream;
   int  fd, count = 0;
   char inbuf[128];

   // Open a file.
   if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
      exit( 1 );

   // Get stream from file descriptor.
   if( (stream = _fdopen( fd, "r" )) == NULL )
      exit( 1 );

   while( fgets( inbuf, 128, stream ) != NULL )
      count++;

   // After _fdopen, close by using fclose, not _close.
   fclose( stream );
   printf( "Lines in file: %d\n", count );
}

Input: crt_fdopen.txt

Line one
Line two

Output

Lines in file: 2

해당 .NET Framework 항목

System::IO::FileStream::FileStream

참고 항목

참조

스트림 I/O

_dup, _dup2

fclose, _fcloseall

fopen, _wfopen

freopen, _wfreopen

_open, _wopen