_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
Output
Lines in file: 2
해당 .NET Framework 항목
System::IO::FileStream::FileStream