반응형
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을 사용하지 않더라도
설정을 통해서 파일 입출력이 가능하다.
반응형
'알고리즘' 카테고리의 다른 글
[ps] 문자열 사전 오름차순 비교 및 정렬 (0) | 2021.05.30 |
---|---|
[ps] 순환되는 행렬 인덱스 (Index) (0) | 2021.05.30 |
동적계획법(Dynamic Programming, DP) (0) | 2021.05.22 |
순열과 조합 (백준 N과 M 시리즈) (4) | 2021.05.08 |
아스키(Ascii) 코드 활용 (1) | 2021.05.06 |
댓글