0
我該如何處理用戶在參數的長版本之前只輸入一個破折號的情況?使用getopt_long處理用戶錯誤
例如,運行我的程序與-copy
$ my_program -copy Copy Open my_program: invalid option -- p Unknown
它是在執行o
選項的問題。我的目標是顯示一個錯誤報告,這是一種心態,「你在一個短劃線之後鍵入了多個字符」。
代碼
#include <getopt.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
struct option options[] =
{
{"open", no_argument, 0, 'o'},
{"copy", no_argument, 0, 'c'},
{0, 0, 0, 0}
};
int c;
int option_index = 0;
while ((c = getopt_long(argc, argv, "oc", options, &option_index)) != -1)
{
switch (c)
{
case 'o':
printf("Open\n");
break;
case 'c':
printf("Copy\n");
break;
default:
printf("Unknown\n");
return 0;
}
}
return 0;
}
如果您不希望單個字母的選項不明確,不指定它們。或者等到您執行任何操作之前解析了所有選項。 – 2014-10-03 04:22:29