是否可以使用getopt函数来解析:

./prog -L -U

同:
./prog -LU

这是我的尝试(不起作用):
while ((c = getopt(argc, argv, "LU")) != -1) {
    switch (c) {
    case 'L':
        // L catch
        break;
    case 'U':
        // U catch
        break;
    default:
        return;
    }
}

在这个简单的例子中只有2个参数,但在我的项目中,6个参数的所有组合都是必需的。例如:-L-LURGHX-LU -RG -H等。
你能应付吗?或者我必须编写复杂的解析器来完成这个任务?

最佳答案

除了缺少一个大括号外,您的代码对我很有用:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
    int c;
    while ((c = getopt(argc, argv, "LU")) != -1) {
        switch (c) {
        case 'L':
            // L catch
            printf("L\n");
            break;
        case 'U':
            // U catch
            printf("U\n");
            break;
        default:
            break;
        }
    }
    return 0;
}

$ ./a.out -LU
L
U
$ ./a.out -L
L
$

10-08 05:51