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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |