Programming/C C++
C언어로 Program작성시 Main함수에 인수를 전달하려면 다음과 같이 main함수를 구성합니다.

main(int 인수명1, char *인수명2[])

main함수를 정의하여 Program에 인수를 받을 수 있도록 처리하였습니다. 인수명1과 인수명2는 변수명칭과 같은 것으로 개발자가 이름을 짓는 규칙에만 벗어나지만 않으면 임의대로 지을 수 있습니다.

처음 int형 인수의 역활은 몇개의 인수가 전달되었는가를 확인하기 위한 인수이며 두번째 인수는 전달받은 실제 인수의 내용을 담고 있습니다.

그럼 인수전달이 어떻게 진행되는지 Program을 통해 확인해 보겠습니다.

#include <stdio.h>

main(int cmc, char *cmd[])
{
  printf("전달받은 인수의 수는 %d개 입니다.\n", cmc);
 
  printf("전달받은 첫번째 인수는 %s\n", cmd[1]);
  printf("전달받은 두번째 인수는 %s\n", cmd[2]);
}


Program에 인수전달을 Test하기 위한 Program을 작성합니다.


Compile된 Program을 실행시킬때 aaa와 bbb문자열을 더해서 Program에 인수를 전달하고 있습니다.

그런데 전달한 인수는 aaa와 bbb두개뿐인데 Program에서는 전달받은 인수가 3이라고 합니다. 이렇게 되는 이유는 Program을 실행시키기 위해 입력했던 test라는 Program의 이름도 하나의 인수로 인식하기 때문입니다.

전달받은 인수 또한 마찬가지 입니다. main에서 인수를 전달받을때는 문자배열(char *cmd[])을 통해 받는데 aaa라는 인수를 확인하기 위해서 cmd[0]이라고 해야할것 같지만 실제로 cmd[0]에는 test라는 문자열이 들어가 있습니다. 앞서 말씀드린 바와같이 test도 하나의 인수성격을 갖고 있기 때문입니다.

#include <stdio.h>

main(int cmc, char *cmd[])
{
  int a;
  int b;
 
  if(cmc < 2){
    printf("인수가 2개이상 필요합니다.\n");
   
    return 1;
  }
 
  a = atoi(cmd[1]);
  b = atoi(cmd[2]);
 
  printf("합계 %d\n", a + b);
}


전달받은 인수에 대한 합계를 구하도록 합니다.

참고:
atoi는 문자열형태의 숫자를 정수화 해주는 함수입니다. 에초부터 정수를 인수로 받고 싶지만 인수는 문자열 형태의 인수만 가능합니다.

두개의 인수에 대한 합계를 구하는 것이므로 인수가 하나밖에 없는 경우에 대비해 if문으로 인수의 갯수를 확인합니다.


0 0