YUYANE

C / 명령행 인자 ( command line argument) 본문

Programming Languages/C

C / 명령행 인자 ( command line argument)

YUYA 2021. 1. 26. 12:35

 

학습 강의

www.boostcourse.org/cs112/lecture/119018/

 

 

명령행 인자(Command line arguments)

 

C언어 프로그램을 실행할 때 'clang' 혹은 'make' 라는 명령을 입력함으로써 프로그램을 컴파일한다. 

그런데 명령을 할 때, 추가 인자(argument)를 넣을 수 있는데, 이를 명령행 인자라고 부른다.

 

#include stdio.h>
#include <cs50.h>

int main(void)
{
}

 

위와 같이 main 함수에 인자를 넣지 않을 수도 있지만,

 

#include <stdio.h>

int main(int argc, char* argv[])
{
	if(argc==2)
    {
    	printf("hello, %s\n",argv[1]);
    }
    else
    {
    	printf("hello, world!\n");
    }
}

 

명령행 인자를 넣어줄 수도 있다. 

첫 번째 인자인 'int arc'는 main 함수가 받게 될 명령행 입력의 개수,  두 번째 인자인 argv[]는 그 입력이 포함되어 있는 배열이다. char형의 배열로 주어진 이유는, 명령행을 문자열로 입력받기 때문이다. 

 

여기서 argv[0]은 기본적으로 프로그램 실행 파일이다. 다시 말해, 첫 번째 명령행 인자는 프로그램 실행파일이다. 따라서 하나의 입력이 주어진다면 그 입력은 argv[1]에 저장될 것이고, 명령행 인자는 2개가 될 것이다.

 

아래 실행 과정을 한 번 살펴보자.

 

make hello

- 'hello'라는 이름의 프로그램을 컴파일 해준다.

./hello

- 명령 인자 없이 'hello' 프로그램을 실행한다. argc == 1(hello.c)이기 때문에 "hello, world"가 출력된다.

./hello cats

- 명령 인자가 입력 되었다. 인자의 갯수는 총 2개(hello.c, cats)이기 때문에 "hello, cats"가 출력된다.

 

 

이해를 돕기 위해 명령행 인자 2개를 받는 코드를 작성해보았다.

 

 

#include <stdio.h>

int main(int argc, char* argv[])
{
	if(argc==2)
    {
    	printf("hello, %s\n",argv[1]);
    }
    if(argc==3)
    {
    	printf("hello, %s, %s\n",argv[1], argv[2]);
    }
    else
    {
    	printf("hello, world!\n");
    }
}

 

 

Comments