访问C中的可选参数,其中两个参数合二为一

时间:2013-11-12 20:27:13

标签: c shell args

我需要访问[pid[value]],但我不确定符号的含义是什么。

我知道如何使用**args来获取我的程序的参数。如果我有[pid][value],我可以为args[1] pidargs[2] value,但如果我有[pid[value]],我就不会知道。我如何访问这两个参数?

2 个答案:

答案 0 :(得分:1)

该表示法通常表示pidvalue都是可选参数,只有在首次指定value时才允许进一步pid。因此,可以使用零参数,一个参数(因此args[1]是PID)调用您的程序,或者两个参数(args[1]仍然是PID,args[2]是新优先级。< / p>

答案 1 :(得分:1)

只有合理的默认值时,可选参数才有意义。假设你这样做,决定最常需要哪一个并将其作为第一个。

char *pid ;
char *value ;

if (argc < 1) {
    value = VALUE_DEFAULT ;
    pid = PID_DEFAULT ;
    }
else if (argc < 2) {
    value = VALUE_DEFAULT ;
    pid = argv[1] ;
    }
else if (argc < 3) {
    value = argv[1] ;
    pid = argv[2] ;
    }

位置可选参数真的只有在你有一组非常有限的参数(你这样做)或你使用它时才有效,所以经常输入标志或参数名称是不值得的。

熟练掌握命令行解析是个好主意。这是将来不会发生太大变化的一件事。