사용범위
Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수
기능
C언어 표준 함수로 이미 열고있는 FILE 을 다른 FILE 로 변경하거나 접근방식(mode) 를 변경한다.
헤더
#include <stdio.h>
※ freopen 함수 사용시 stdio.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※
함수
FILE* freopen(const char* filename, const char* mode, FILE* file);
파라미터
- const char* filename
- 새로 open 할 파일의 이름과 경로를 입력한다.
- 파일의 이름만 입력시 상대경로로 접근한다.
- const char* mode
- 첫번째 파라미터인 filename 에 접근할 방식을 입력한다.
- mode 와 관련된 정보는 fopen 함수를 참고한다.
- FILE* file
- fopen 함수를 통해 열린 file stream을 입력한다.
반환값
성공시 변경에 성공한 file stream 를 반환한다.
실패시 NULL을 반환한다. (세번째 파라미터인 file stream 을 API 내부에서 닫는다.)
잡학지식
몇몇의 알고리즘 사이트는 input 에 대한 output 을 file 로 지정해서 테스트를 진행한다.
그럴때 본인이 사용중인 IDE 에서 printf 같은 콘솔출력으로 테스트를 진행한 후에
freopen 함수를 사용해서 stdout 을 file stream 으로 변경해주기만 하면 코드수정 없이(?) 진행할 수 있다.
<소스 코드>
#include <stdio.h>
int main() {
FILE *fp;
printf("Hello, freopen (stdout)\n");
// stdout -> file stream
fp = freopen("test.txt", "w", stdout);
if(fp != NULL) {
printf("[freopen] Change STDOUT -> test.txt stream !");
fclose(fp);
} else {
// freopen 실패 !
}
return 0;
}
※ 실행 결과
Hello, freopen (stdout)
< test.txt >
[freopen] Change STDOUT -> test.txt stream !
반응형
'C언어 > stdio.h' 카테고리의 다른 글
[C언어] ftell 함수 (stdio.h, 파일 크기, stream 위치 구하기) (0) | 2022.09.02 |
---|---|
[C언어] fseek 함수 (stdio.h, 파일 stream 오프셋 변경) (0) | 2022.08.31 |
[C언어] remove 함수 (stdio.h) (0) | 2022.08.23 |
[C언어] fputc 함수 (stdio.h) (0) | 2022.08.17 |
[C언어] fgetc 함수 (stdio.h) (0) | 2022.08.17 |