C 명령줄 매개변수
프로그램을 실행할 때 명령줄에서 C 프로그램으로 값을 전달할 수 있습니다. 이러한 값을 명령줄 매개변수라고 하며, 특히 코드 내에 이러한 값을 하드코딩하는 대신 외부에서 프로그램을 제어하려는 경우 프로그램에 중요합니다.
명령줄 매개변수는 main() 함수 매개변수를 사용하여 처리됩니다. 여기서 argc는 전달된 매개변수 수를 나타내고 argv[]는 프로그램에 전달된 각 매개변수를 가리키는 포인터 배열입니다. 다음은 명령줄에 매개변수가 제공되는지 확인하고 매개변수에 따라 해당 작업을 수행하는 간단한 예입니다.
#include <stdio.h>int main( int argc, char *argv[] ) { if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); }}
하나의 매개변수를 사용하여 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
$./a.out testingThe argument supplied is testing
사용 두 개의 매개변수를 사용하여 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
$./a.out testing1 testing2Too many arguments supplied.
매개변수를 전달하지 않고 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
$./a.outOne argument expected
주의해야 할 점은 argv [0]이 저장됩니다. 프로그램 이름, argv[1]은 첫 번째 명령줄 인수에 대한 포인터이고 *argv[n]은 마지막 인수입니다. 인수가 제공되지 않으면 argc는 1이 되고, 인수가 하나 전달되면 argc는 2로 설정됩니다.
여러 명령줄 매개변수는 공백으로 구분되지만 매개변수 자체에 공백이 포함된 경우 매개변수를 전달할 때 매개변수를 큰따옴표 "" 또는 작은따옴표 '' 안에 넣어야 합니다. 위의 예를 공백이 포함되도록 다시 작성해 보겠습니다. 그러면 이와 같은 뷰를 전달하고 큰따옴표나 작은따옴표 """"로 묶을 수 있습니다. 큰따옴표 안에 있는 프로그램에 명령줄 인수를 전달하기 위해 위의 예를 다시 작성해 보겠습니다.
#include <stdio.h>int main( int argc, char *argv[] ) { printf("Program name %s\n", argv[0]); if( argc == 2 ) { printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ) { printf("Too many arguments supplied.\n"); } else { printf("One argument expected.\n"); }}
큰따옴표로 묶인 간단한 공백으로 구분된 인수를 사용하여 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
$./a.out "testing1 testing2"Progranm name ./a.outThe argument supplied is testing1 testing2