C 언어 명령줄 인수 파싱

CBeginner
지금 연습하기

소개

이 프로젝트에서는 C 프로그램에서 명령줄 인수를 파싱하고 처리하는 방법을 배우게 됩니다. 이는 많은 프로그램이 동작을 사용자 정의하기 위해 명령줄 인수를 받아 처리하므로 소프트웨어 개발의 기본적인 기술입니다.

👀 미리보기

$ gcc cmd.c -o cmd
$ ./cmd --arg1 1 --arg2 demo --arg9 labex
arg1:1
arg2:demo
arg9:labex

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • C 파일을 생성하고 C 프로그램의 기본 구조를 작성하는 방법
  • 명령줄 인수를 파싱하고 매개변수 이름과 값을 추출하는 방법
  • 필요한 형식으로 매개변수 이름과 값을 출력하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 명령줄 인수의 개념과 C 프로그램에서 사용하는 방법을 이해합니다.
  • 명령줄 인수를 파싱하고 처리할 수 있는 프로그램을 구현합니다.
  • C 프로그래밍 지식을 실제 문제 해결에 적용합니다.

C 파일 생성

이 단계에서는 명령줄 인수 프로그램을 위한 C 파일을 생성합니다.

  1. 터미널을 열고 프로젝트 디렉토리로 이동합니다:
cd ~/project
  1. 프로젝트 디렉토리에 cmd.c라는 새 C 파일을 생성합니다:
touch cmd.c
  1. 텍스트 편집기에서 cmd.c 파일을 열고 다음 코드를 추가합니다:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    // Your code will go here
    return 0;
}

이것은 명령줄 인수를 처리할 C 프로그램의 기본 구조입니다.

명령줄 인수 파싱 구현

이 단계에서는 명령줄 인수를 파싱하고 매개변수 이름과 값을 출력하는 로직을 구현합니다.

  1. main() 함수 내에서 명령줄 인수를 반복하는 루프를 추가합니다:
for (int i = 1; i < argc; i++) {
    // Your code will go here
}

루프는 argv[0]에 프로그램 이름이 포함되어 있으므로 인덱스 1 부터 시작합니다.

  1. 루프 내부에서 현재 인수가 --로 시작하는지 확인합니다:
if (strncmp(argv[i], "--", 2) == 0) {
    // The argument is a parameter
    char *param = argv[i] + 2; // Remove the leading "--"
    char *value = NULL;

    // Check if there is a value after the parameter
    if (i + 1 < argc && strncmp(argv[i + 1], "--", 2) != 0) {
        value = argv[i + 1];
        i++; // Skip the value argument
    }

    printf("%s:%s\n", param, value);
}

이 코드는 명령줄 인수에서 매개변수 이름과 값을 추출하여 필요한 형식으로 출력합니다.

  1. 최종 코드는 다음과 같습니다:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        if (strncmp(argv[i], "--", 2) == 0) {
            char *param = argv[i] + 2; // Remove the leading "--"
            char *value = NULL;

            // Check if there is a value after the parameter
            if (i + 1 < argc && strncmp(argv[i + 1], "--", 2) != 0) {
                value = argv[i + 1];
                i++; // Skip the value argument
            }

            printf("%s:%s\n", param, value);
        }
    }

    return 0;
}
  1. cmd.c 파일을 저장합니다.

프로그램 컴파일 및 실행

이 단계에서는 C 프로그램을 컴파일하고 몇 가지 샘플 명령줄 인수로 실행합니다.

  1. cmd.c 파일을 컴파일합니다:
gcc cmd.c -o cmd

이렇게 하면 cmd라는 실행 파일이 생성됩니다.

  1. 몇 가지 샘플 명령줄 인수로 프로그램을 실행합니다:
./cmd --arg1 1 --arg2 demo --arg9 labex

다음과 같은 출력을 볼 수 있습니다:

arg1:1
arg2:demo
arg9:labex
  1. 중복된 매개변수로 프로그램을 실행해 봅니다:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex

다음과 같은 출력을 볼 수 있습니다:

testarg1:1
testarg2:demo
testarg1:labex

축하합니다! 명령줄 인수 파싱 프로그램을 성공적으로 구현했습니다.

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습