study2015. 4. 2. 11:41

Visual Studio를 사용해서 알고리즘 연습혹은 구현하다 보면 TC (Test Case)의 데이터를 파일로 부터 읽어올 일이 생긴다.

예를 들면 아래코드에서 주석 처리된 부분, input.txt를 freopen을 이용해서 stdin으로 출력 할 수 있지만,

Visual Studio Project properties에 Command line을 설정해서 간단하게 처리 할 수 있다.

#include <stdio.h>


int main(void)

{

int T;

int N, K;


  //freopen("input.txt", "r", stdin);

setbuf(stdout, NULL);

scanf("%d", &T);


for (int tcIdx = 1; tcIdx <= T; ++tcIdx)

{

scanf("%d\n", &N);

scanf("%d\n", &K);

printf("%d, %d, %d\n", tcIdx, N, K);

}


return 0;

}


Visual Studio Menu -> Project -> (your project name) Properties... -> Configuration Properties -> Debugging -> Command Arguments 를 보면 텍스트 필드가 있는데 아래처럼 적는다.

< input.txt


만약 Console에 출력되는 값을 파일로 저장하고 싶다면? 이때도 Command Arguments 을 이용하면 된다.


< input.txt > output.txt

이렇게 하면 입력은 input.txt로 출력은 output.txt로 한다.


++ 추가 

setbuf를 썼는데 빌드 할 때 아래와 같은 에러가 발생하면.

error C4996: 'setbuf': This function or variable may be unsafe. Consider using setvbuf instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


Visual Studio Menu -> Project -> (your project name) Properties... -> Configuration Properties -> C/C++ ->Preprocessor -> Preprocessor Definitions 에 _CRT_SECURE_NO_WARNINGS을 추가 해주자.


Visual Studio Menu -> Project -> (your project name) Properties... -> Configuration Properties -> Linker -> System -> SubSystem 을

Console (/SUBSYSTEM:CONSOLE) 으로 하면 프로그램 실행 이후에도 콘솔창이 사라지지 않는다.






Posted by 평면우주