我正在開發一個c專案,我正在嘗試撰寫一個程式,該程式允許用戶使用命令列選項之一來呼叫該程式。例如
./program [-a or -b or -c] [-f filename] [-l length]
這[-a or -b or -c]是強制性的,而-f不是-l。
我的問題是,如果用戶同時選擇任何兩個或多個,如何回傳錯誤[-a or -b or -c]?
這是允許的
./program -a -f -l
但不是
./program -a -b -f -l
我的想法是用來getopt()驗證選項,但我不知道該怎么做。
感謝您的時間!對不起,如果我問一些愚蠢的問題。
uj5u.com熱心網友回復:
getopt所做的只是讓決議命令列選項變得容易——它不會為你做任何驗證。您需要跟蹤是否設定了a、b或c:
bool abcSet = false;
while( (c = getopt( argc, argv, "abcf:l:" )) != -1 )
{
switch( c )
{
case 'a':
if ( !abcSet )
{
// processing for a
abcSet = true;
}
else
// error, b or c already set
break;
case 'b':
// same as above
break;
case 'c':
// same as above
break;
...
}
你可以玩弄測驗的感覺或者你想如何跟蹤設定了哪個選項,但你必須以某種方式跟蹤這些資訊。
uj5u.com熱心網友回復:
getopt不允許這種程度的控制。
有兩種方法可以處理此問題:
- 每當您閱讀其中一個選項時,請檢查是否已閱讀其他選項之一。
- 閱讀所有選項后,檢查是否提供了更多選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516695.html
標籤:C获取选择
