std:: freopen
|
헤더 파일에 정의됨
<cstdio>
|
||
|
std::
FILE
*
freopen
(
const
char
*
filename,
const
char
*
mode,
std::
FILE
*
stream
)
;
|
||
먼저, stream 과 연결된 파일을 닫으려 시도하며(모든 오류는 무시), filename 이 null이 아닌 경우 mode 를 사용하여 std::fopen 과 유사한 방식으로 지정된 파일을 열려 시도하고, 해당 파일을 stream 이 가리키는 파일 스트림과 연결합니다. filename 이 null 포인터인 경우, 함수는 이미 stream 과 연결된 파일을 다시 열려 시도합니다 (이 경우 어떤 모드 변경이 허용되는지는 구현에 따라 정의됩니다).
목차 |
매개변수
| filename | - | 파일 스트림과 연결할 파일 이름 |
| mode | - | 새로운 파일 접근 모드 를 결정하는 null 종료 문자열 |
| stream | - | 수정할 파일 스트림 |
파일 접근 플래그
|
파일 접근
모드 문자열 |
의미 | 설명 |
파일이 이미
존재할 때 동작 |
파일이
존재하지 않을 때 동작 |
|---|---|---|---|---|
| "r" | 읽기 | 파일을 읽기용으로 열기 | 시작부터 읽기 | NULL 반환 및 오류 설정 |
| "w" | 쓰기 | 파일을 쓰기용으로 생성 | 내용 파괴 | 새 파일 생성 |
| "a" | 추가 | 파일에 추가하기 | 끝에 쓰기 | 새 파일 생성 |
| "r+" | 확장 읽기 | 파일을 읽기/쓰기용으로 열기 | 시작부터 읽기 | NULL 반환 및 오류 설정 |
| "w+" | 확장 쓰기 | 파일을 읽기/쓰기용으로 생성 | 내용 파괴 | 새 파일 생성 |
| "a+" | 확장 추가 | 파일을 읽기/쓰기용으로 열기 | 끝에 쓰기 | 새 파일 생성 |
|
파일 접근 모드 플래그
"b"
를 선택적으로 지정하여 파일을
바이너리 모드로 열기
할 수 있습니다. 이 플래그는 POSIX 시스템에서는 아무 효과가 없지만, Windows와 같은 시스템에서는
'
\n
'
와
'
\x1A
'
의 특별한 처리를 비활성화합니다.
추가 파일 접근 모드에서는 파일 위치 표시자의 현재 위치와 관계없이 데이터가 파일 끝에 기록됩니다. |
||||
| 파일 접근 모드 플래그 "x" 를 선택적으로 "w" 또는 "w+" 지정자에 추가할 수 있습니다. 이 플래그는 파일이 존재할 경우 덮어쓰는 대신 함수가 실패하도록 강제합니다. (C++17) | ||||
| 모드가 위에 나열된 문자열 중 하나가 아닌 경우 동작은 정의되지 않습니다. 일부 구현에서는 추가로 지원되는 모드를 정의합니다 (예: Windows) . | ||||
반환값
stream 성공 시 스트림, 실패 시 널 포인터를 반환합니다.
참고 사항
std::freopen 는 스트림의 좁은/넓은 방향성을 변경하는 유일한 방법입니다. 이 방향성은 I/O 연산이나 std::fwide 에 의해 이미 설정된 후에는 변경할 수 있습니다.
Microsoft CRT 버전의
std::freopen
은
filename
이 null 포인터일 때 어떤 모드 변경도 지원하지 않으며 이를 오류로 처리합니다(
documentation
참조). 가능한 해결 방법은 비표준 함수인
_setmode()
를 사용하는 것입니다.
예제
다음 코드는
stdout
을 파일로 리디렉션합니다.
#include <cstdio> int main() { std::printf("stdout is printed to console\n"); if (std::freopen("redir.txt", "w", stdout)) { std::printf("stdout is redirected to a file\n"); // this is written to redir.txt std::fclose(stdout); } }
출력:
stdout is printed to console
참고 항목
|
파일을 엽니다
(함수) |
|
|
파일을 닫습니다
(함수) |
|
|
C documentation
for
freopen
|
|