ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • int argc, char *argv[]
    Visual Studio/C 기초 2013. 10. 6. 16:03

    C에선 명령 라인에서 프로그램으로 전달되는 인수를 사용할 필요가 있습니다. 명령 라인 인수는 프로그램을 실행할 때 프로그램의 이름 다음에 입력되는 값을 뜻합니다.

    c:>프롬프트에서 PROGNAME이라는 프로그램을 실행한다고 가정합니다.

    C:\>progname smith jones

    2개의 명령 라인 인수인 smith와 jones는 프로그램이 실행되는 동안 읽어들일 수 있습니다. 이런 값은 프로그램의 main() 함수에 전달되는 인수로 생각할 수 있는데 명령 라인 인수는 프로그램이 실행되는 동안이 아니라 프로그램이 시작될 때 정보를 전달하는 역할을 하므로 가끔 매우 유용합니다.

    원하는 만큼 많은 명령 라인 인수를 전달할 수 있습니다. 명령 라인 인수는 main() 함수에서만 읽어들일 수 있습니다.

     

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

    첫 번째 인수 argc는 명령 라인 인수의 개수를 지정하는 정수형 변수입니다. 프로그램의 이름도 포함되므로 이 값은 항상 적어도 1이상입니다. 매개변수 argv[]는 문자열에 대한 포인터의 배열입니다. 이 배열에서 사용할 수 있는 첨자는 0부터 argc-1 까지 입니다.

    포인터 argv[0]은 디렉터리 경로를 포함하는 프로그램의 이름을 지적하고, argv[1]은 프로그램의 이름 다음에 나타나는 첫 번째 인수를 지적합니다.

    아, 그리고 명령 라인 인수를 받아들이기 위해 다른 변수 이름을 사용할 수는 있으나, 대개는 이 두 가지 이름 즉, argc, argv를 자주 사용하므로 그대로 사용하는 것이 좋습니다.

    명령 라인 인수는 공백으로 구분 되는데요, 만약 공백을 포함하는 인수를 전달하기 원한다면 큰따옴표에 인수 전체를 포함시키면 됩니다.

    c:\>progname smith "and jones"

    여기서 smith는 argv[1]이 가리키는 첫 번째 인수, and jones는 argv[2]이 가리키는 두 번째 인수가 됩니다.

    예제를 보겠습니다.

    #include <stdio.h>

    main(int argc, char *argv[])
    {
     int count, a;
     printf("프로그램 이름 : %s\n", argv[0]);

     if(argc>1)
     {
      for(count=1;count<argc;count++)
       printf("인수 %d: %s\n", count, argv[count]);
     }
     else
      puts("명령 라인 인수가 없습니다.\n");
     puts("종료하시려면 아무 키나 입력하고 엔터를 눌러주세요");
     scanf("%d",&a);
    }

    명령 프롬프트를 열고 방금 코딩한 프로그램 이름과 명령 라인 인수를 입력하고 엔터를 누르면 다음과 같은 결과가 나옵니다.

    첫 번째는 명령 라인 인수를 입력한 경우, 두 번째는 그냥 파일 이름만 입력했을 경우 입니다.

    'Visual Studio > C 기초' 카테고리의 다른 글

    C언어 시프트 연산자  (0) 2013.10.01
    C언어 memset(), memcpy(), memmove()  (0) 2013.09.13
    C언어 free()  (0) 2013.09.13
    C언어 realloc()  (0) 2013.09.11
    C언어 calloc()  (0) 2013.09.10

    댓글

Designed by Tistory.