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 프로그램 내에서 어떻게 접근되는지에 대한 더 나은 아이디어를 얻기 위해 여러분의 쪽에서 몇 가지 프로그램을 시도해 보십시오.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.