C 언어 | 포인트 | main() 함수의 매개 변수


프로그램 기동시에 부모 프로세스와 명령으로부터 받은 문자열을 가져온다.

명령 줄(command line) 인수

main() 함수도 인수를 받을 수 있다. 그럼 main() 함수는 어디에서 인수를 받는가? main() 함수는 자신을 기동시키는 부모 프로세스부터 시작시에 지정된 옵션을 문자열로 받는다. 일반적으로 명령 줄에서 전달된다. 이에 따라 프로그램의 실행에 필요한 정보를 요청할 수 있게 된다.

main() 함수는 두 개의 인수가 전달된다. 하나는 명령 줄에서 전달된 인수의 수이다. 다른 하나는 명령 줄 인수로 전달된 문자열이다. 관행적으로 첫번째 가인수을 argc, 둘째 가인수를 argv라고 명명한다. argc에는 인수의 수가 argv에는 인수의 문자열이 들어간다. 따라서 일반적인 main() 함수는 지금까지 사용해 온 인수를 받지 않는 형식 외에도 인수를 받는 형태 중 하나를 사용할 수 있다.

main() 함수

int main(int argc , char *argv[])

명령 인수를 처리하는 경우는 위의 형식을 사용해야 한다. 가인수의 이름은 선택 사항이지만 argument count를 축약한 argc와 argument vector를 축약한 argv를 사용하는 것이 관행으로 되어 있다. 배열 변수 argv에 액세스하여 지정된 번호의 명령 문자열을 얻을 수 있다.

코드 1

#include<stdio.h>

int main(int argc , char *argv[]) {
  int iCount;
 for(iCount = 0 ; iCount < argc ; iCount++)
    printf("%d번째 인수 = %s\n" , iCount + 1 , argv[iCount]);
  return 0;
}

코드1은 main() 함수에 주어진 인수를 표시한다. argc가 상수인 경우 argv[0]은 반드시 실행된 프로그램의 이름으로 정해져 있다. argc가 1이상의 값이면 어떤 명령 인수가 전달되었는지를 나타낸다.

실행 결과처럼 명령 인수는 문자열 테이블로 저장되어 있기 때문에 argc를 점검하고 argv의 적절한 요소에 액세스하여 원하는 인수를 얻을 수 있을 것이다. 실질적인 첫번째 인수는 argv[1]이며, 반드시 마지막 인수는 argv[argc - 1]이다. 이외에 표준은 argv[argc]이 NULL임을 보증한다.