다음을 통해 공유


_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.

설명

_fdopen 함수 연결 된 I/O 스트림을 식별 되는 파일을 fd, 따라서 버퍼링 하 고 포맷 하는 낮은 수준의 I/O 열리는 파일을 수 있습니다._wfdopen와이드 문자 버전인 _fdopen. mode 인수를 _wfdopen 와이드 문자 문자열입니다._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
    열기 텍스트에서 (번역) 모드입니다.이 모드에서 입력 한 줄 피드 (LF) 캐리지 리턴-줄 바꿈 (CR-LF) 조합을 번역 및 LF 문자 출력에서 CR-LF 조합으로 변환 됩니다.또한, Ctrl + Z는 파일 끝 문자로 입력으로 해석 됩니다.읽기/쓰기용으로 열 파일에서 fopen 파일의 끝에 Ctrl + Z를 검사 하 고, 가능 하면 제거 합니다.이 사용 하 여 수행 되는 fseek 및 ftell 옮기려면 Ctrl + Z로 끝나는 파일 내에서 함수를 발생할 수 있습니다 fseek 파일의 끝 근처를 제대로 동작 하도록.

  • b
    이진 (번역 되지 않은) 모드에서 열려 있습니다.모든 번역에서 t 모드는 억제 됩니다.

  • c
    연결 된 커밋 플래그 사용 filename 파일 버퍼의 내용을 직접 경우 디스크에 기록 되도록 fflush 또는 _flushall 라고 합니다.

  • n
    커밋 깃발에 연결 된 filename "아니요 커밋"에 이 값이 기본값입니다.Commode.obj 사용 하 여 프로그램을 링크 하는 경우에 또한 글로벌 커밋 플래그를 재정의 합니다.Commode.obj 사용 하 여 프로그램을 명시적으로 연결 하지 않으면 글로벌 커밋 플래그 기본값은 "no 커밋"입니다.

The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.ANSI 이식성을 유지 하려는 경우에 사용 하지 않습니다.

경우 t 또는 b 주어진 되지 않습니다 mode, 기본 변환 모드는 전역 변수로 정의 된 _fmode.경우 t 또는 b 인수, 함수 실패 및 반환에 접두사가 NULL.텍스트 및 이진 모드에 대 한 설명은 참조 하십시오. 텍스트 및 이진 모드 파일 I/O.

유효한 문자에 대 한의 mode 문자열에 사용 되는 fopen 및 _fdopen 해당 oflag 인수를 사용 _open_sopen와 같이.

문자 mode 문자열

Equivalent oflagvalue for _open/_sopen

a

_O_WRONLY | _O_APPEND(usually _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY(usually _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR(usually _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 );
}

입력: crt_fdopen.txt

Line one
Line two

dye30d82.collapse_all(ko-kr,VS.110).gifOutput

Lines in file: 2

해당 .NET Framework 항목

System::IO::FileStream::FileStream

참고 항목

참조

스트림 I/O

_dup, _dup2

fclose, _fcloseall

통해, _wfopen

freopen, _wfreopen

_open, _wopen