加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的强制参数getopt

发布时间:2020-12-16 10:10:47 所属栏目:百科 来源:网络整理
导读:我在C中有这段代码 while((i = getopt(argc,argv,":p:h:s:n:l:f:SLNF")) != -1) switch(i){ case 'p': printf("Porta obbligatorian"); break; case 'h': printf("hostnamen"); break; case 's': printf("Surnamen"); break; case 'n': printf("Namen");
我在C中有这段代码

while((i = getopt(argc,argv,":p:h:s:n:l:f:SLNF")) != -1)
    switch(i){
        case 'p': printf("Porta obbligatorian");
                  break;
        case 'h': printf("hostnamen");
                  break;
        case 's': printf("Surnamen");
                  break;
        case 'n': printf("Namen");
                  break;
        case 'l': printf("Loginn");
                  break;
        case 'f': printf("Facultyn");
                  break;
        case 'S': printf("Print Surnamen");
                  break;
        case 'L': printf("Print Loginn");
                  break;
        case 'N': printf("Print First namen");
                  break;
        case 'F': printf("Print Facultyn");
                  break;
        case '?': printf("USAGEn");
                  break;
        default: printf("USAGE defaultn");
                  break;


    }


   return 0;
}

我怎么才能只有一个强制参数?在我的情况下是p.

例如:

./MyProgram -p 80 -h 127.0.0.1

结果好的.

./MyProgram -h 127.0.0.1

错误,因为缺少-p

只有-p.

提前致谢.

解决方法

通常使用while循环来存储值,然后在循环后检查强制选项:

int p = -1;

while((i = getopt(argc,":p:h:s:n:l:f:SLNF")) != -1)
    switch(i){
        case 'p': p = (int)atol(optarg);
                  break;
        <skipped a few options >
        default: printf("USAGE defaultn");
                  break;
    }

   // Check mandatory parameters:
   if (p == -1) {
      printf("-p is mandatory!n");
      exit 1;
   }

   return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读