-
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