다음을 통해 공유


freopen, _wfreopen

파일 포인터를 다시 할당합니다. 이러한 기능의 더 안전한 버전을 사용할 수 있습니다. freopen_s, _wfreopen_s를 참조하십시오.

FILE *freopen( 
   const char *path,
   const char *mode,
   FILE *stream 
);
FILE *_wfreopen( 
   const wchar_t *path,
   const wchar_t *mode,
   FILE *stream 
);

매개 변수

  • path
    새 파일의 경로입니다.

  • mode
    허용 되는 액세스 유형

  • stream
    FILE 구조체에 대한 포인터입니다.

반환 값

각 함수는 새롭게 열린 파일에 대한 포인터를 반환합니다. 오류가 발생하는 경우, 원본 파일은 닫혀지고 함수는 NULL 포인터 값을 반환합니다. 이 path, mode, 혹은 stream 은 null 포인터이거나 filename 이 빈 문자열일 경우, 이러한 함수는 매개 변수 유효성 검사로 설명된대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 errno 를 EINVAL 로 설정하고 NULL을 반환합니다.

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

설명

더 안전한 버전의이 함수존재를 보려면, freopen_s, _wfreopen_s를 참조하세요.

이 freopen 함수는 현재 stream 과 연결된 파일을 닫고 stream 을 path*.* 에 의해 지정된 파일로 재할당합니다. _wfreopen 은 _freopen의 와이드 문자 버전입니다.; _wfreopen 의 path 및 mode 인수는 와이드 문자 문자열입니다. _wfreopen 및 _freopen 는 동일하게 작동합니다.

제네릭 텍스트 라우팅 매핑

TCHAR.H 루틴

_UNICODE 및 _MBCS 정의되지 않음

_MBCS 정의됨

_UNICODE 정의됨

_tfreopen

freopen

freopen

_wfreopen

freopen 는 일반적으로 미리 열어본 파일 stdin, stdout, 와 stderr 을 사용자가 지정한 파일에 재전송하기위해 사용됩니다. 이 stream 와 관련된 새 파일은 mode*,* 를 사용하여 열리며 다음과 같이 파일에 대해 요청된 액세스의 형식을 지정하는 문자열입니다.

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

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

  • "a"
    새로운 데이터를 파일에 쓰기 전에 EOF 마커를 제거하지 않고 파일의 끝에 쓰기(추가) 위해 엽니다. 존재하지 않는 경우 파일을 먼저 만듭니다.

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

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

  • "a+"
    읽고 추가하기 위해 엽니다; 추가 작업은 새로운 데이터가 파일에 쓰여지기 전에 EOF 마커의 제거도 포함하며 EOF 마커는 쓰기가 완료된 후 재저장 됩니다; 파일이 존재하지 않는 경우 파일을 먼저 만듭니다.

이 "w" 와 "w+" 형식은 기존 파일을 삭제할 수도 있으므로 신중하게 사용합니다.

이 "a" 또는 "a+" 액세스 형식을 사용하여 파일을 연 경우 모든 쓰기 작업은 파일의 끝에서 수행됩니다. 이 fseek 또는 rewind를 사용하여 파일 포인터의 위치를 변경할 수 있지만, 파일 포인터는 쓰기 작업을 수행하기 전에 항상 파일 끝으로 다시 이동합니다. 따라서 기존 데이터를 덮어쓸 수 없습니다.

이 "a" 모드는 파일에 추가 하기 전에 EOF 마커를 제거하지 않습니다. 추가 작업이 수행된 이후에는 MS-DOS TYPE 명령은 원래 EOF 표식까지만 데이터를 표시하고 파일에 추가된 데이터는 표시하지 않습니다. 이 "a+" 모드는 파일에 추가 하기 전에 EOF 마커를 제거합니다. 추가 후에는 MS-DOS TYPE 명령으로 파일의 모든 데이터를 표시합니다. "a+" 모드에서는 Ctrl+Z EOF 표식으로 종료되는 스트림 파일에 추가해야 합니다.

"r+", "w+" 또는 "a+" 액세스 형식을 지정한 경우 읽기와 쓰기가 모두 허용됩니다. 즉, 파일이 "업데이트"용으로 열립니다. 그러나 읽기 및 쓰기를 전환할 때 반드시 fsetpos, fseek, 또는 rewind 작업 사이에 있어야 합니다. 원하는 경우, fsetpos 또는 fseek 작업에 대해 현재 위지를 지정할 수 있습니다. 위의 값 이외에도 아래의 문자중 하나가 새 줄에 대한 변환 모드를 지정하기 위해 mode 문자열에 포함 될 수 있습니다.

  • t
    (변환된)텍스트 모드 에서 엽니다; 캐리지 return-linefeed (CR-LF) 조합은 입력에서 단일 linefeed (LF) 문자로 변환됩니다; LF 문자는 출력에서 CR-LF 조합으로 변환됩니다. 또한, CTRL + Z는 입력에서 파일 끝 문자로 해석 됩니다. 읽기 위해 열리거나 "a+" 를 사용하여 읽거나 쓰기 위해 열린 파일에서 런타임 라이브러리는 파일의 끝에서 CTRL+Z 를 확인하고 가능하다면 제거합니다. 이 fseek 및 ftell 을 사용하여 파일 내에서 이동하면 파일의 끝 부분에서 fseek 가 제대로 동작하지 않을 수 있으므로 이 작업을 수행합니다. 이 t 옵션은 Microsoft 확장이므로 ANSI 이식성이 필요한 경우 사용할 수 없습니다.

  • b
    (변환 되지 않은) 이진 모드에서 엽니다; 위의 변환은 표시되지 않습니다.

t 또는 b가 mode에 지정되지 않은 경우, 기본 변환 모드는 전역 변수 _fmode로 정의됩니다. t 또는 b가 인수에 접두어로 추가되면 이 함수는 실행되지 못하고 NULL을 반환합니다.

텍스트 및 이진 모드의 논의는 텍스트 및 이진 모드 파일 I/O 를 참조하십시오.

요구 사항

Function

필수 헤더

freopen

<stdio.h>

_wfreopen

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

콘솔은 Windows 스토어 응용 프로그램에서 지원되지 않습니다. 콘솔에 연결된 표준 스트림 핸들 stdin, stdout 및 stderr은 Windows 스토어 응용 프로그램의 C 런타임 함수에서 사용되기 전에 리디렉션되어야 합니다. 추가 호환성 정보는 호환성을 참조하십시오.

예제

// crt_freopen.c
// compile with: /W3
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   // Reassign "stderr" to "freopen.out": 
   stream = freopen( "freopen.out", "w", stderr ); // C4996
   // Note: freopen is deprecated; consider using freopen_s instead

   if( stream == NULL )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
  

해당 .NET Framework 항목

참고 항목

참조

스트림 I/O

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode