프로그래밍 언어/C C++

main 함수에 입력 변수 설정하기

트리맨스 2021. 3. 3. 01:32
반응형

 

C언어를 이용해 코드를 짜다 보면은 특정 기능을 함수 또는 클래스로 구분하여 작성을 하게 된다. 함수는 입력 변수가 있기도 하고, 없기도 한다. main 함수도 똑같은 함수인데, 입력 변수가 있을까? 답은 "있다" 이다. 이에 대한 작성법을 알아보자.

 

main 함수의 입력변수


main 함수의 레퍼런스를 확인해 보자.

en.cppreference.com/w/cpp/language/main_function

 

Main function - cppreference.com

A program shall contain a global function named main, which is the designated start of the program. It shall have one of the following forms: int main () { body } (1) int main (int argc, char *argv[]) { body } (2) /* another implementation-defined form, wi

en.cppreference.com

위 내용을보게 되면, 

int main (int argc, char *argv[] ) {body}

의 내용이 있는 것을 알 수 있다. argc는 입력 변수의 개수, argv는 입력 변수의 내용을 담아두는 문자열 배열이다. 특이한 것은, argv의 첫번째 내용(0번째 내용)은 컴파일된 파일의 실행 경로이다. 즉, 입력 변수가 하나도 없으면 argc는 1이 되고, *argv는 실행 경로가 된다. 간단한 프로그램을 통해서 알아보자.

 

1
2
3
4
5
6

 

#include <stdio.h>
 
int main(int argc,char *argv[])
{
    printf("argc : %d\nargv[0] : %s", argc, argv[0]);
}
cs

 

위 코드를 실행시키면, argc는 1이 나오고 argv[0] 은 프로그램의 실행 경로가 나올 것이다.

 

그렇다면, 입력 변수가 있는 프로그램의 경우에는 어떻게 출력이 될까?

개발 환경은 dev c++로 진행했으며, 여기서 입력 변수를 넣는 법은 다음과 같다.

Excute -> parameters 의 첫번째 칸에 입력하면 된다.

 

코드는 다음과 같다.

 

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main(int argc,char *argv[])
{
    int i = 0;
    printf("argc : %d\n",argc);
    while(i < argc)
        printf("argv[%d] : %s\n", i - 1, argv[i++]);
}
cs

 

위 코드를 파라메터와 같이 실행하면, 다음과 같은 결과가 나오게 된다.

 

argc : 4 -> 입력 변수가 3개 (1개는 실행 경로) 이다. 

argv[0] : 실행 경로

argv[1] : test1 -> 첫 번째 입력변수 (파라메터) 내용

argv[2~4] : 이하 동일

 

 

리눅스 환경에서의 사용


main.c 파일에 위 코드를 입력 후, 괄호를 제외 후(괄호 안은 설명) 다음과 같이 입력하자.

 

gcc main.c   (main.c 를 컴파일 하여 a.out 실행파일을 만들어라)

./a.out test1 test2 test3  (a.out 파일을 실행하되 test1, test2, test3 을 입력 변수로 해라)

 

결과 화면은 다음과 같다.

출력이 잘 되는것을 알 수 있다.

 

반응형