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

C 언어 main() 함수에 인수를 전달하는 방법: argc와 argv 완벽 정리

네, C 언어에서는 main() 함수에 인수를 전달할 수 있습니다. 이를 명령줄 인수(Command Line Arguments)라고 부르며, 프로그램 실행 시 운영체제의 명령줄에서 프로그램 이름 뒤에 입력한 값들이 프로그램으로 전달됩니다.

main() 함수로 전달할 수 있는 인수는 두 가지입니다.

  • argc(argument count): 명령줄에서 전달된 인수의 개수를 저장합니다.
  • argv(argument vector): 전달된 각 인수를 문자열 배열 형태로 저장합니다.

흥미로운 점은 main() 함수가 개발자가 직접 호출하는 것이 아니라, 터미널에서 프로그램을 실행할 때 운영체제(또는 셸 프로그램)가 호출한다는 것입니다. 이때 명령줄에 입력된 값들이 자동으로 main() 함수에 넘겨지게 됩니다.

기본 문법

명령줄 인수를 받는 main() 함수의 기본 문법은 다음과 같습니다.

int main(int argc, char *argv[]){
    // 코드 작성
    return 0;
}

여기서 argc는 int형 정수이고, argv는 문자열 포인터 배열(char *argv[])입니다. argv[0]에는 항상 프로그램 이름 자체가 저장되므로, 실제 사용자가 입력한 인수는 argv[1]부터 시작됩니다.

예제 코드

다음 예제는 프로그램에 전달된 모든 인수를 출력합니다.

#include<stdio.h>
int main(int argc, char *argv[]){
    int i;
    for (i = 0; i < argc; i++) {
        printf("Arg %d: %s\n", i, argv[i]);
    }
    return 1;
}

실행 결과

Arg 0: G:\CP\CP programs\main with arguments.exe

결과 해설

위 프로그램은 프로그램 이름 자체를 포함하여 명령줄에서 전달된 모든 인수를 순서대로 출력합니다. 실행 결과에서 볼 수 있듯이 argv[0]에는 실행 파일의 경로와 파일명이 저장되어 있는 것을 확인할 수 있습니다.

예를 들어 터미널에서 다음과 같이 실행하면,

./program hello world 123

argc는 4가 되고, argv[0]은 "./program", argv[1]은 "hello", argv[2]는 "world", argv[3]은 "123"이 됩니다. 이처럼 명령줄 인수를 활용하면 프로그램 실행 시점에 외부 값을 유연하게 받아 처리할 수 있어 실용적인 프로그램 작성에 매우 유용합니다.