본문 바로가기
알고리즘

freopen( )을 이용한 파일 입출력

by 까망 하르방 2021. 5. 24.
반응형

freopen() 필요성

알고리즘 문제를 풀다보면 주어진 Input Data를 입력받아

Logic을 수행한 후 정해진 Output Data를 출력한다.

 

scanf()나 cin 으로 표준 입출력 하는 경우에는 

계속해서 Copy & Paste해야 하는 번거로움이 있다.

이러한 작업을 쉽게 해주는 것이 파일 입출력이다.

freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

[리소스 파일] 하위에 "input.txt"와 "output.txt" 파일을 둔다.

(파일명은 임의로 설정하면 된다.)

 

해당 파일은 프로젝트에서 .cpp와 같은 경로에 있는 것을 확인할 수 있는데

다른 위치에 두는 경우에는 그것에 맞춰서 경로를 지정할 수 있다.

#include <stdio.h>  

int N, map[5];
char ch;

int main(void) {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    // 입력
    scanf("%d %c", &N, &ch);
    for (int i = 0; i < 5; ++i)
    {
        scanf("%d", &map[i]);
    }
    // 출력
    printf("%d %c\n", N, ch);
    for (int i = 0; i < 5; ++i)
    {
        printf("%d\n", map[i]);
    }
}

 

input.txt를 아래와 같이 작성하고 실행했을 때,

10 A

1 0 1 9 4

 

아래와 같은 결과를 확인할 수 있다.

 

참고로 freopen( )은 스트림을 다른 파일이나 방식(mode)로 여는 것인데,

알고리즘 문제를 푸는 것에서는 깊게 이해할 필요는 없고, 파일명과 경로를 주의하면 된다.

FILE* freopen(const char* filename, const char* mode, FILE* stream);

 

문제 사이트에서 코드 제출할 때는 freopen 부분을 제거하거나 

주석처리해야 정상적으로 수행된다.

Visual Studio에서는 freopen을 사용하지 않더라도 

설정을 통해서 파일 입출력이 가능하다.

 

▶ [VS] Visual Studio에서 input.txt로 입력받도록 설정하기 

 

[VS] Visual Studio에서 input.txt로 입력받도록 설정하기

Visual Studio에서 input.txt로 입력받도록 설정하기 알고리즘 문제를 풀다보면 Input Data를 입력받고 특정 Logic을 수행하고 출력한다. 코드에 아래 문구로도 "input.txt" 파일에서 입력을 받을 수 있지만 fr

zoosso.tistory.com

반응형

댓글