getopt () 함수 소개
우 리 는 스스로 명령 행 매개 변수 분석 프로그램 을 작성 할 수 있 지만, 사실은 Liux 는 관련 기능 을 실현 하 는 함 수 를 제공 합 니 다. 이 함 수 는 getopt 함수 입 니 다.
관련 함수 헤더 파일
#include < unistd. h > 함수 원형 및 관련 외부 변수 성명
int getopt(int argc, char* const argv[ ], const char* optstring);
extern char *optarg; //옵션 뒤에 매개 변수 값 이 연결 되 어 있 으 면 optarg 는 이 매개 변수 값 을 가리 키 고 있 습 니 다.
extern int optind, //초기 화 값 은 1 이 고 다음 처리 할 인자 의 색인 으로 설정 되 었 습 니 다.getopt 의 진 도 를 기록 하 는 데 사용 합 니 다.
extern int opterr, //초기 화 값 이 1 입 니 다. opterr = 0 일 때 getopt 는 stderr 에 오류 정 보 를 출력 하지 않 습 니 다.
extern int optopt; //명령 행 옵션 문자 가 optstring 에 포함 되 지 않 거나 필요 한 인자 가 없 을 때,
//이 옵션 은 optot 에 저 장 됩 니 다. getopt 는 '?'
함수 설명
getopt () 는 명령 행 매개 변 수 를 분석 하 는 데 사 용 됩 니 다. 즉, 명령 행 매개 변수 중의 옵션 을 분석 하 는 데 사 용 됩 니 다.매개 변수 argc 와 argv 는 main () 이 전달 하 는 매개 변수 개수 와 내용 입 니 다.매개 변수 optstring 은 옵션 지정 문자열 을 표시 합 니 다.이 문자열 은 getopt 에 어떤 옵션 을 사용 할 수 있 는 지, 그리고 관련 값 이 있 는 지 알려 줍 니 다.getopt () 함 수 를 호출 할 때마다 옵션 을 되 돌려 줍 니 다. 이 옵션 에 인자 (연결 값) 가 있 으 면 optarg 는 이 인자 (연결 값) 를 가리 킵 니 다.
함수 getopt () 는 optstring 에서 '-' 로 시작 하 는 문자 (주의! 문자열 이 아 닙 니 다!!) 가 명령 행 매개 변수 옵션 이 라 고 생각 합 니 다. 어떤 매개 변수 옵션 은 뒤에 매개 변수 값 을 따라 갈 수 있 습 니 다.optstring 의 형식 규범 은 다음 과 같 습 니 다. 1) 단일 문자, 표시 옵션, 2) 하나의 문자 뒤에 콜론 을 연결 합 니 다. ":"이 옵션 을 선택 하면 매개 변수 값 (연결 값) 과 연결 해 야 합 니 다.매개 변 수 는 옵션 뒤에 바짝 붙 거나 빈 칸 으로 구분 합 니 다. 열다이 매개 변수의 지침 은 optarg 에 부 여 됩 니 다. 3) 하나의 문자 뒤에 두 개의 콜론 이 있 습 니 다. ":"선택 가능 한 값 옵션 을 표시 합 니 다. 이 옵션 을 선택 하면 하나의 인자 와 함께 합 니 다.매개 변 수 는 옵션 뒤에 바짝 붙 어야 합 니 다. 비어 있 으 면 안 됩 니 다. 격 리이 매개 변수의 지침 은 optarg 에 부 여 됩 니 다.
여기 서 '1ac: d::' 를 사례 로 설명 합 니 다. 그 중에서 1, a 는 값 이 없 는 매개 변수 옵션 입 니 다. c 는 값 이 있어 야 하 는 매개 변수 옵션 이 고 d 는 선택 가능 한 매개 변수 입 니 다.
실제 호출 에서 '- 1 - a - c cval - d', '-1 -a -c cvalue -ddvalue', '-1a - dvalue - c cvue '는 모두 합 법 적 입 니 다.여기 서 몇 가 지 를 주의해 야 합 니까?
1. 값 이 없 는 매개 변 수 는 연결 할 수 있 습 니 다. 1 과 a 는 값 이 없 는 매개 변수 입 니 다. - 1 - a 로 나 누 어 쓸 수도 있 고 - 1a 또는 - a1 로 연결 할 수도 있 습 니 다.
2. 매개 변 수 는 선후 순 서 를 가리 지 않 고 '- 1a - c cval - ddvalue' 와 '- d - c cval - a1' 의 분석 결 과 는 같 습 니 다.
3. 선택 할 수 있 는 매개 변수의 값 과 매개 변수 사이 에 빈 칸 이 있어 서 는 안 됩 니 다. - dvalue 라 는 형식 으로 써 야 합 니 다. - d dvalue 라 고 쓰 면... 형식 은 오 류 를 해석 할 수 있 습 니 다.
4. 어떤 Liux 버 전 은 첫 번 째 비 옵션 매개 변수 에서 멈 추고 - 1 로 돌아 가 optind 의 값 을 설정 합 니 다.어떤 Liux 버 전 은 프로그램 에 나타 나 는 것 을 처리 할 수 있 습 니 다. 순서 매개 변수 중 임의의 위치 에 있 는 옵션 입 니 다. 이 경우 getopt 는 실제 argv [] 배열 을 다시 써 서 매개 변 수 를 모 았 습 니 다.
반환 값
getopt () 호출 할 때마다 명령 행 에 들 어 오 는 인 자 를 한 번 씩 되 돌려 줍 니 다.
인자 가 없 는 마지막 호출 시 getopt () 는 - 1 로 돌아 갑 니 다.
optstring 에 없 는 매개 변 수 를 분석 하거나 필수 값 매개 변수 가 값 이 없 을 때 '?' 로 돌아 갑 니 다.
optstring 이 ':' 로 시작 할 때 값 인자 가 부족 한 경우 ':' 가 아니 라 '?' 로 돌아 갑 니 다.
프로그램 범례
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int opt;
while((opt = getopt(argc, argv, ":if:lr")) != -1) {
switch(opt) {
case 'i':
case 'l':
case 'r':
printf("option: %c
", opt);
break;
case 'f':
printf("filename: %s
", optarg);
break;
case ':':
printf("option needs a value
");
break;
case '?':
printf("unknown option: %c
", optopt);
break;
}
}
for(; optind < argc; optind++)
{
printf("argument: %s
", argv[optind]);
}
exit(0);
}
프로그램 출력
$ ./argopt -i -lr 'hi there' -f fred.c -q
option: i
option: l
option: r
filename: fred.c
unknown option: q
argument: hi there
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.