【发布时间】:2016-01-24 22:37:50
【问题描述】:
我只是在通过终端解析我的选项参数时遇到了问题。 执行我的 c 文件时,我只能有一个选项,即文件名。我可以使用两个选项(一个短选项和一个长选项)输入文件名:
- -f
- --文件名
他们都需要文件名作为参数。 当我使用“-f”和“--filename”执行程序时,它可以正常工作,但是当我测试“-filename”时,它不会给我错误提示“用法是......”并且它会计算参数这个选项作为main的非选项参数之一(不知道我表达得好不好) 任何人都可以帮助我吗?我该如何处理?如何告诉用户这不是正确的选项? 到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <getopt.h>
static struct option longopts[] = {
{"filename", required_argument, 0, 'f'},
{0, 0, 0, 0}
};
int main(int argc, char **argv) {
int res;
int indexptr;
char *filename;
while ((res = getopt_long(argc,argv,"f:",longopts,&indexptr)) != -1)
{
switch(res)
{
case 'f':
filename = optarg; // the file is now in optarg
break;
default: /* '?' */
fprintf(stderr, "Usage: %s <[-f/--filename Filename]> <D> <U>\n", argv[0]);
exit(EXIT_FAILURE);
}
}
}
谢谢
【问题讨论】:
-
你看过this如何使用它的简洁的例子吗?
标签: c terminal getopt-long