gpt4 book ai didi

c - 使用 getopt 获取非指定参数 C

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:30 25 4
gpt4 key购买 nike

我正在编写一个需要能够解析命令行参数的程序,我想使用 getopt。我对让它与常规参数一起工作没有任何问题,但是我需要它能够获取未用标志指定的参数。例如,如果我运行:./prog -a a1 -b b2 foo 我需要能够获取 a1、a2 和 foo。现在它处理除未指定参数之外的所有内容。这是我所拥有的:

while((command = getopt(argc, argv, "a:b:c:")) != -1){
switch(command){
case('a'):
input = fopen(optarg, "r");
if(input == NULL){
printf("Error opening file, exiting\n");
exit( -1 );
}
break;

case('b'):
output = fopen(optarg, "r");
if(output == NULL){
printf("Error opening file, exiting\n");
exit( -1 );
}
break;

case('c'):
keyword = optarg;
break;


case('?'):
if((optopt == 'a') || (optopt == 'b') || (optopt == 'c')){
fprintf(stderr, "Error, no argument specified for -%c\n", optopt);
exit( -1 );
} else
extra = optarg; // This is how I thought I needed to do it

break;

default:
fprintf(stderr,"Error in getopt");
break;
}// switch
} // while

谢谢!

最佳答案

循环后,optind 变量将成为下一个非选项参数的索引。

例如也是如此

if (optind < argc)
{
printf("Have extra arguments: ");
for (int i = optind; i < argc; ++i)
printf("%s ", argv[i]);
printf("\n");
}

列出所有非选项参数。

关于c - 使用 getopt 获取非指定参数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com