Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 명령줄 인수(Command Line Arguments) 사용법과 예제

C 프로그램은 실행될 때 명령줄(command line)에서 값을 전달받을 수 있습니다. 이렇게 전달되는 값들을 명령줄 인수(command line arguments)라고 부르며, 프로그램 내부에 값을 하드코딩하는 대신 외부에서 프로그램의 동작을 제어하고 싶을 때 매우 유용하게 활용됩니다.

명령줄 인수는 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");
   }
}

위 코드의 동작 방식을 살펴보면 다음과 같습니다.

  • argc == 2: 프로그램 이름(argv[0])을 제외하고 인수가 정확히 하나 전달된 경우, 해당 인수(argv[1])를 출력합니다.
  • argc > 2: 인수가 두 개 이상 전달된 경우, 너무 많은 인수가 전달되었다는 메시지를 출력합니다.
  • 그 외(argc == 1): 인수가 전혀 없는 경우, 하나의 인수가 필요하다는 메시지를 출력합니다.

실행 결과 1 — 인수가 하나인 경우

$./a.out testing
The argument supplied is testing

프로그램 이름 뒤에 'testing'이라는 인수 하나를 전달했기 때문에 argc는 2가 되고, argv[1]에 저장된 값이 그대로 출력됩니다.

실행 결과 2 — 인수가 두 개 이상인 경우

$./a.out testing1 testing2
Too many arguments supplied.

두 개의 인수를 전달하면 argc가 3이 되어 'Too many arguments supplied.'라는 메시지가 출력됩니다.

실행 결과 3 — 인수가 없는 경우

$./a.out
One argument expected

아무 인수도 전달하지 않으면 argc는 1이 되며, 인수가 필요하다는 안내 메시지가 출력됩니다.

참고 사항

argv[0]에는 항상 프로그램 자체의 이름이 저장되므로, 실제로 전달된 인수는 argv[1]부터 시작됩니다. 따라서 argc 값은 최소 1이며, 인수를 하나 전달하면 argc는 2가 됩니다. 이러한 구조를 이해하면 파일 경로, 옵션 설정 등 다양한 값을 외부에서 유연하게 받아 처리하는 프로그램을 작성할 수 있습니다.