산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

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 testing
The argument supplied is testing

두 개의 인자로 실행하면 다음과 같은 결과가 나옵니다.

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

인자 없이 실행하면 다음과 같은 결과가 나옵니다.

$./a.out
One 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"
Program name ./a.out
The argument supplied is testing1 testing2

C 언어

  1. 디코더 이해하기: 유형, 진리표, 실전 응용
  2. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  3. Java 명령줄 인수 마스터하기: 매개변수 전달 및 파싱 방법
  4. 라인 효율성 이해: PCB 생산을 위한 핵심 지표
  5. 생산 라인(Production Line) 이해: 조립 라인이 제조 효율을 이끄는 방식
  6. 건축선(Building Lines) 완벽 가이드: 부동산 소유자가 알아야 할 필수 지식
  7. 브리지 탭(Bridge Taps) 이해: 전화·인터넷 품질 저하 원인과 해결
  8. 조립 라인(Assembly Line) 이해: 호환 부품이 이끄는 효율적 생산 혁명
  9. 정밀 슬리팅 라인: 정확한 폭으로 코일 절단하는 고도 자동화 설비
  10. 화학 포장 라인 최적화: 가동률 및 OEE 추적 향상을 위한 업그레이드