2015. 3. 7. 23:42ㆍ프로그래밍/C/C++
1. argc, argv
메인 함수도 함수기 때문에 값을 전달하고 리턴도 할 수 있다.
argc는 argument count로 들어오는 인자들의 수를 저장한다.
argv는 문자열 상수를 캐릭터 포인터 배열로 저장한다.
메인 함수의 형태는 다음과 같다.
int main(int argc, char* argv[])
메인 함수 진입시 외부에서 들어오는 인자들을 컨트롤하기 위한 방법이다.
2. 작성 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main(int argc, char* argv[])
{
int i = 0;
printf("argc = %d\n", argc);
for (i = 0; i < argc; i++)
{
printf("argv[%d] = \n%s\n", i,argv[i]);
}
}
|
cs |
이것을 그냥 컴파일 하게 되면,
결과값은 argc = 1, argv[0] = 해당경로/파일명
이런 결과값이 나온다.
일단 argv[0]에는 파일명이 고정으로 들억가기때문에 argc는 기본이 1의 값을 가진다.
디버그 모드 상태여서 해당 파일 경로가 모두 들어간다.
3. 명령 프롬프트에서 실행해보자
비주얼 스튜디오에서 빌드가 완료되면 .exe파일이 해당 프로젝트에 생긴다.
해당 경로를 찾아가서 exe를 실행할 수 있다.
실행 > cmd로 명령프롬프트에 들어간다.
해당 경로를 찾아가 naver.exe에 직접 인자들을 넣어줄 수 있다.
비주얼 스튜디오 테스트 cmd와 실행한 cmd를 구분하기 위해 실행한 cmd는 흰 배경!
Naver.exe string1 string2 string3을 실행한 화면이다.
argv[0]에 파일명이 들어갔고, argv[1~3]까지 string들이 순차적으로 들어간 것을 확인할 수 있다.
이런 방법으로 인자값을 전달하여 메인 함수에서 프로그램 실행과 동시에 인자를 받고 원하는 작업을 할 수 있는것이다.
4. 비주얼 스튜디오에선 테스트 해볼 순 없나요? 안성생님 CMD가 싫어요.
물론 있다.
프로젝트 속성 > 구성 속성 > 디버깅 > 명령 인수
이렇게 명령 인수 부분에 arg1 arg2 arg3을 넣었다.
결과값을 보자.
아주 아름답게 잘 나온다.
'프로그래밍 > C/C++' 카테고리의 다른 글
friend (0) | 2015.03.30 |
---|---|
__forceinline, __inline, inline 함수 조사 (0) | 2015.03.29 |
Stroustrup Empty class에 대한 내용 읽어보기 (1) | 2015.03.25 |
부동소수점과 예시 (4) | 2015.03.06 |
C와 C++의 차이점 (0) | 2015.02.23 |
기호 이름 읽는 법 (0) | 2015.02.18 |
포인터 넘길 때 주의사항(malloc 예제) (0) | 2015.02.17 |