getopt를 사용하여 프로그래밍 한대로 사용자의 옵션을 처리하는 프로그램을 작성하고 있습니다. 내 질문은, 사용자가 잘못된 옵션을 입력하면 어떻게 오류가 표시됩니까? 또한 변수에 액세스하여 오류 메시지에 표시하려고합니다. 여기에 내 코드의 스냅 샷은 다음과 같습니다 getopt를 사용하여 명령 줄 사용자 인수에 액세스
#include <unistd.h>
#include <iostream>
int main(int argc, char **argv)
{
enum {
WHOLE, PREFIX, ANYWHERE, SUFFIX, EMBEDDED
} mode;
bool reverse_match = false;
bool ignore_case = false;
bool specify_length = false;
int c;
while ((c = getopt(argc, argv, "wpsavein:")) != -1) {
switch (c) {
case '?':
std::cerr << "Unrecognised option " << std::endl;
std::cerr << "Usage: match [-OPTION]... PATTERN [FILENAME]..." << std::endl;
return 2;
break;
case 'w': // pattern matches whole word
mode = WHOLE;
break;
case 'p': // pattern matches prefix
mode = PREFIX;
//cout << "test: " << optarg << endl;
break;
case 'a': // pattern matches anywhere
mode = ANYWHERE;
break;
case 's': // pattern matches suffix
mode = SUFFIX;
break;
case 'v': // reverse sense of match
reverse_match = true;
break;
case 'e': // pattern matches anywhere
mode = EMBEDDED;
break;
case 'i': // ignore case
ignore_case = true;
break;
case 'n': // specifies length of match
specify_length = true;
}
}
}
나는 오류를 표시합니다
cerr
스트림을 사용하지만 그것은 또한 사용자 입력을 포함하고 싶습니다. 예를 들어 사용자 입력
-t
는 오류가 될 경우 :
invalid option -- 't'
Unrecognised option -t
Usage: match [-OPTION]... PATTERN [FILENAME]...
내가
invalid option -- 't'
가 기본이라고 생각하지만, 거기는 내가 수정할 수있는 방법 또는이다
Unrecognised option -t
Usage: match [-OPTION]... PATTERN [FILENAME]...
내가 얻고 것은 그것을 포함하지 않습니까? 또한 사용자가 지정한 옵션에 액세스 할 수 있습니까? getopt에에서 설명서의
당신이'getopt'의 매뉴얼 페이지를 읽는 노력했다. 이 모든 질문에 답합니다. –
이 작업을 수행하려면'optopt'를 읽고'opterr'을 설정할 수 있습니다. [맨페이지보기] (https://linux.die.net/man/3/getopt) –