소개
이 프로젝트에서는 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 파일을 생성합니다.
- 터미널을 열고 프로젝트 디렉토리로 이동합니다:
cd ~/project
- 프로젝트 디렉토리에
cmd.c라는 새 C 파일을 생성합니다:
touch cmd.c
- 텍스트 편집기에서
cmd.c파일을 열고 다음 코드를 추가합니다:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
// Your code will go here
return 0;
}
이것은 명령줄 인수를 처리할 C 프로그램의 기본 구조입니다.
명령줄 인수 파싱 구현
이 단계에서는 명령줄 인수를 파싱하고 매개변수 이름과 값을 출력하는 로직을 구현합니다.
main()함수 내에서 명령줄 인수를 반복하는 루프를 추가합니다:
for (int i = 1; i < argc; i++) {
// Your code will go here
}
루프는 argv[0]에 프로그램 이름이 포함되어 있으므로 인덱스 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);
}
이 코드는 명령줄 인수에서 매개변수 이름과 값을 추출하여 필요한 형식으로 출력합니다.
- 최종 코드는 다음과 같습니다:
#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;
}
cmd.c파일을 저장합니다.
프로그램 컴파일 및 실행
이 단계에서는 C 프로그램을 컴파일하고 몇 가지 샘플 명령줄 인수로 실행합니다.
cmd.c파일을 컴파일합니다:
gcc cmd.c -o cmd
이렇게 하면 cmd라는 실행 파일이 생성됩니다.
- 몇 가지 샘플 명령줄 인수로 프로그램을 실행합니다:
./cmd --arg1 1 --arg2 demo --arg9 labex
다음과 같은 출력을 볼 수 있습니다:
arg1:1
arg2:demo
arg9:labex
- 중복된 매개변수로 프로그램을 실행해 봅니다:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex
다음과 같은 출력을 볼 수 있습니다:
testarg1:1
testarg2:demo
testarg1:labex
축하합니다! 명령줄 인수 파싱 프로그램을 성공적으로 구현했습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



