✔ 학습목표
명령행 인자를 받는 프로그램을 c로 작성할 수 있다.
명령행 인자
명령행 인자(command line arguments)는 사용자가 명령행에서 명령을 실행할 때 해당 명령과 함께 지정하는 인자를 의미한다. 명령행 인자는 자동으로 프로그램의 main함수에 전달된다.
이제껏 당연하게 int main(void)라 써왔던 main 함수를 생각해볼 때다. main도 그 형태를 보면 하나의 함수다. 즉 사용자 정의 함수처럼 입력값과 출력 값을 가질 수 있다는 것이다.
#include <cs50.h>
#include <stdio.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
printf("hello, %s\n", argv[1]);
}
else
{
printf("hello, world\n");
}
}
위 예제를 보자. 입력값에 'int argc, string argv[]'이 들어간 프로그램이다. 첫 번째 변수 argc는 main함수가 받게 될 입력의 개수(int)이다. 그리고 argv[]는 그 입력이 포함되어 있는 배열이다. 프로그램을 명령 행에서 실행하므로, 입력은 문자열(string)로 주어진다.
argv[0]는 기본적으로 프로그램의 이름을 저장한다. 만약 여기에 하나의 입력이 더 추가된다면 argv[1]에 저장될 것이다. 예를 들어 위 프로그램을 './argc'로 실행하면 "hello, world"가 출력된다. 명령행 인자에 주어진 값이 하나밖에 없기 때문이다. 하지만 './argc David'로 실행해보면 "hello, David"라는 값이 출력된다. 명령행 인자에 David 값이 추가되었고, 따라서 argc는 2, argv[1]는 'David'가 되기 때문이다.
* argc는 argument count를, argv는 argument vector를 뜻한다.
이 글은 네이버 부스트 코스 David J. Malan(데이비드 J. 말란) 교수님의 모두를 위한 컴퓨터 과학(CS50 2019) 강의를 수강하고 작성한 글입니다. 본 강좌 내 실습에서는 CS50 Sandbox를 사용합니다.
'Programming > C' 카테고리의 다른 글
C 언어 | 메모리 주소 (0) | 2021.02.19 |
---|---|
C 언어 | 왜 배열을 선언할 때 상수 변수값을 크기로 지정할 수 없을까? (0) | 2021.02.04 |
C 언어 | 문자열의 활용 (0) | 2021.02.02 |
C 언어 | 문자열과 배열 (0) | 2021.02.02 |
C 언어 | 배열 (0) | 2021.02.02 |