필요성

알고리즘 문제를 푸는데, 예제 입출력이 너무 적다. 어떠한 랜덤 값을 만들어서 넣고싶다. 그런데 이 값이 매우 많아서 일일히 치는 것이나 어디다가 저장해놓고 콘솔에 복붙하는 건 너무 간지가 안난다. 그래서 이 과정을 파일 입출력으로 바꿔서 해본다. 이럴 경우 랜덤으로 값을 뽑기도 쉽고 뭔가더 간지가 난다.

입력 (input.txt)

5
10 40 30 50 10
10 200

출력 (output.txt)

600

Code

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

int main(){
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int a, b;
    cin >> a >> b;
    ...
    cout << ans;
}

#define _CRT_SECURE_NO_WARNINGS

scanf 대신 scanf_s를 사용하는 것은 어떠한 보안상의 문제 때문에 사용한다. 엄밀히 말하면 버퍼 때문인데, 이것은 다른 글을 참고하자. 이럴 때, 컴파일러는 오류를 내는데, 이런 오류를 무시하라는 명령이다.

freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
  1. 파일 이름
  2. 쓰기, 읽기 모드
  3. 어떤 것으로 처리할 것인지

위와 같이 쓰면, 파일을 읽은 뒤에, 이것을 cin, cout으로 처리하여 읽도록 만들어 준다.