C 프로그래밍 · 2 min read · Nov 20, 2025

리눅스 C 프로그래밍 튜토리얼 22부 - C 프로그램 내에서 명령줄 인수 접근하기

이전 튜토리얼에서는 C 프로그래밍 언어의 포인터와 관련된 여러 개념에 대해 논의했습니다. 우리가 논의한 개념 중 하나는 포인터 배열이었습니다. 우리는 이 개념을 설명하기 위해 정수 포인터 배열의 예를 사용했습니다.

C 프로그램 내에서 명령줄 인수 접근하는 방법

하지만 그 튜토리얼에서 언급했듯이, 포인터 배열은 다양한 유형일 수 있습니다. 예를 들어, 다음은 문자 포인터 배열입니다:

char *arr[] = {"HowtoForge", "FaqForge", "Linux"};

그리고 다음은 이 배열이 어떻게 사용될 수 있는지를 보여주는 작은 프로그램입니다:

#include   
  
int main()  
{  
 char *arr[] = {"HowtoForge", "FaqForge", "Linux"};  
   
 printf("\n %s", *arr);  
 printf("\n %s", *(arr+1));  
 printf("\n %s", *(arr+2));  
  
   
 return 0;  
}

‘arr’는 이 배열의 첫 번째 요소의 주소입니다. 이제, 이것은 포인터 배열이기 때문에 첫 번째 요소(및 arr에 1과 2를 더하여 접근한 모든 다른 요소)는 주소에 불과합니다. 따라서 그 주소에 저장된 값을 접근하기 위해 * 연산자를 사용합니다.

다음은 이 프로그램의 출력입니다:

HowtoForge   
FaqForge   
Linux

그래서 이것이 문자 포인터 배열에서 값을 접근하는 방법입니다. 이제 여러분은 왜 우리가 이 모든 것을 논의했는지 궁금할 것입니다.

글쎄요, 우리는 이것이 C 프로그래밍 언어를 지원하는 환경에서 명령줄 인수에 접근할 수 있는 능력이라는 또 다른 중요한 개념으로 이어지기 때문에 이렇게 했습니다. 이것에 대해 자세히 논의해 보겠습니다.

이제 여러분이 잘 알고 있어야 할 것은, ‘main’은 프로그램이 실행될 때 호출되는 첫 번째 함수입니다. 이 함수는 두 개의 인수인 argc와 argv로 호출됩니다. 전자는 명령줄 인수의 수에 대해 알려주고, 후자는 실제로 인수 자체에 대한 포인터 배열입니다.

프로그램 이름 자체가 main 함수에 인수로 전달된다는 점에 유의하십시오. 따라서 이로 인해 인수의 수 - argc로 표시됨 - 는 프로그램에 전달된 실제 인수의 수보다 하나 더 많습니다. 다음은 예입니다:

#include   
  
int main(int argc, char *argv[])  
{  
 printf("\n %d", argc);  
 printf("\n %s", *argv);  
   
 return 0;  
}

이제 우리는 이 프로그램 - a.out이라고 불리며, 시스템의 ‘home’ 디렉토리에 있습니다 - 을 인수 없이 실행했습니다. 그리고 출력은 다음과 같습니다:

 1   
 /home/a.out

따라서 프로그램의 실행 이름이 인수로 전달된 것을 볼 수 있습니다. 만약 제가 다음 명령을 사용했다면:

/home/a.out htf ff

그 경우 argc는 3이 되고 argv는 문자열 ‘/home/a.out’, ‘htf’, ‘ff’의 주소를 포함하게 됩니다.

다음은 인수를 출력하는 프로그램을 더 잘 작성하는 방법입니다:

#include   
  
int main(int argc, char *argv[])  
{  
   for(int i=0; i

인수는 명령줄에서 전달된 순서대로 배열에 저장된다는 점을 기억할 가치가 있습니다.

결론

여러분은 C 코드 내에서 명령줄 인수를 다루어야 하는 여러 상황을 만날 가능성이 높습니다. 여기서 논의한 내용은 여러분에게 기초가 되어야 합니다. 명령줄 인수가 C 프로그램 내에서 어떻게 접근되는지에 대한 더 나은 아이디어를 얻기 위해 여러분의 쪽에서 몇 가지 프로그램을 시도해 보십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.