获取命令行参数(java是gnu.getopt.Getopt)_aieb4954的博客-程序员宅基地

技术标签: java  操作系统  

1、函数说明

表头文件:#include

函数声明:int getopt(int argc, char * const argv[], const char *optstring);

函数说明:getopt()用来分析命令行参数。参数argc和argv是由 main()传递的参数个数和内容。参数optstring 则代表欲处理的选项字符串。此函数会返回在argv 中下一个的选项字母,此字母会对应参数optstring 中的字母。如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数。如果getopt()找不到符合的参数则会印出错信息,并将全域变量optopt设为“?”字符,如果不希望getopt()印出错 信息,则只要将全域变opterr设为0即可。

选项的使用定义规则类似:

ab:c::

意思是:

a 后没有冒号,表示没有可以参数

b 后跟一个冒号,表示有一个必要的参数

c 后跟两个冒号,表示有一个可选的参数

长选项的定义相同,但用逗号分割。

返回值:如果找到符合的参数则返回此参数字母,如果参数不包含在参数optstring 的选项字母则返回“?”字符,分析结束则返回-1。

2、例子程序

下面是一个使用getopt函数读取参数的例子程序,该程序支持 –p –s –b –c的参数,并将这些参数值读取后进行打印。你可以根据需要将这些代码稍作修改用于自己的程序中。

/*

* getopt.c

* Author: Coonxu

* email: [email protected]

* 这是一个使用getopt函数读取参数的例子程序,该程序支持 -p -s -b -c的参数,

* 并将这些参数值读取后进行打印。你可以根据需要将这些代码稍作修改用于自己的程序中。

*/

#include

#include

int main(int argc, char **argv)

{

int ch;

opterr = 0;

while( ( ch = getopt( argc, argv, "s:b:c:p:" ) ) != EOF )

{

switch(ch)

{

case 's':

printf("s opt: %s\n", optarg);

break;

case 'b':

printf("b opt: %s\n", optarg);

break;

case 'c':

printf("c opt: %s\n", optarg);

break;

case 'p':

printf("p opt: %s\n", optarg);

break;

case '?':

printf( "illegal option: %c\n", ch );

break;

}

}



return 0;

}

转载于:https://www.cnblogs.com/frankliiu-java/archive/2010/05/20/1740060.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aieb4954/article/details/101964174

智能推荐

myeclipse各版本区别blue、Spring-程序员宅基地

https://www.myeclipsecn.com/buy/#EditionsComparehttps://www.myeclipsecn.com/features/myeclipse-license/

java sql 查询中的转义序列不对_SQL查询中的转义序列不对的解决办法-程序员宅基地

使用Sybase WorkSpace连接到Sybase IQ,执行如下SQL:createPROCEDUREtest()BEGINPrint’ReplacethisPrintlinewithyourSQLstatements’;insertintoemployeelocation’ww.demodb’{select*fromemployee_temp};END..._sql中的转义序列不对

微信公众号--跳转菜单并获取用户的信息_微信公众号跳转网页获取用户手机号-程序员宅基地

前段时间,公司需要做一个公众号,根据菜单栏跳转到显示用户会员信息功能,在网上查询资料后,找到了解决办法 微信公众号接口地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842第一步是把微信公众号的网页授权的链接放在菜单栏的url上面,上图: 通过网页授权路径: http..._微信公众号跳转网页获取用户手机号

wget指定服务器如何使用,wget 命令参数使用方法_黄哒哒的博客-程序员宅基地

wget 命令参数用法:-P指定下载文件的存放目录 /dir-O指定下载文件的名字,重命名 /dir/file-o屏幕输出信息保存到日志中;相当于 > /dir/logfile-a屏幕输出信息追加到日志中;相当于 >> /dir/logfile-S屏幕输出服务器响应头信息;试验如下:1、不指定任何参数,下载文件到当前目录;[root@fan~]#wgethttp://wa...

XNA 3.0 Game Programming Recipes翻译2-1-程序员宅基地

在3D世界建立不同相机模式 在3D程序里,相机是最基本的组件之一。相机代表用户在3D世界的视点。XNA把相机所见的3D世界呈现在屏幕上。你用XNA把三维场景上的内容渲染到画面上之前您必须先指定相机的位置和查看方向。 在你创建3D程序前本章将从一些基本议题开始。 本章的第二部分包含一些高级示例。最后展示如何读进你自己的内容。 本章包含如下内容: 学习相机在三维中应用的...

oracle前一行减后一行,Oracle查询当前某条数据的前一行数据与后一行数据-程序员宅基地

oracle可以使用 lead、lag 函数来查询已有记录的下一条、上一条记录。表结构如下: 如要查询Staffno是6-1102的前一条记录:select * from staff where staff_no=(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staf..._oracle上一行减去下一行

随便推点

洛谷3807-卢卡斯定理-python-(lucas+费马小定理+快速幂)_python,lucas定理_DongLUOWAN的博客-程序员宅基地

*AC代码global n,m,pdef fast_pow(a,b): ans=1 while b: if b&1: ans=(ans*a)%p a=(a**2)%p b>>=1 return ansdef getCombination(a,b): if b>a: return 0 if b>a-b: b=a-b u=1_python,lucas定理

2019美研计算机录取,2019美研录取更新 | 春节OFFER大集锦,没有比OFFER更好的新年礼物了!..._cyeninesky345的博客-程序员宅基地

原标题:2019美研录取更新 | 春节OFFER大集锦,没有比OFFER更好的新年礼物了! 嗨,春节有比收到红包更让人激动的事儿吗?有!比如收到OFFER!继二月初惊喜地收获两枚斯坦福大学的硕士录取后,过去的一周,OFFER可谓是络绎不绝!接下来,我们就挑部分录取来给大家过把瘾!哥伦比亚大学2019 U.S.News No.3Columbia University恭喜P同学收获Columbia硕士...

WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptRe-程序员宅基地

在webconfig中找到 删除即可。 如果没有上面两句的话:在appSettings字节中添加 然后刷新页面oK成功

基于javaweb的会议室管理系统(java+jsp+html+servlet+mysql)_会议管理系统javaweb-程序员宅基地

基于javaweb的会议室管理系统(java+jsp+html+servlet+mysql)运行环境Java≥8、MySQL≥5.7、Tomcat≥8开发工具eclipse/idea/myeclipse/sts等均可配置运行适用课程设计,大作业,毕业设计,项目练习,学习演示等功能说明_会议管理系统javaweb

linux dev queue xmit,學習Linux-4.12內核網路協議棧(2.4)——接口層數據包的發送_爱燃烧的博客-程序员宅基地

這篇文章主要介紹網絡層的數據是怎么通過接口層將數據發送出去的,在開始之前我們還是再來看一下softnet_data這個很重要的結構體:struct softnet_data {struct list_head poll_list;struct sk_buff_head process_queue;/* stats */unsigned int processed;unsigne..._linux中dev_hard_start_xmit

使用Anaconda简单安装Tensorflow(CPU,GPU版本)-程序员宅基地

1.首先安装Anaconda具体安装可以参考下:https://blog.csdn.net/u012318074/article/details/77075209/ ,或者自行百度2. 安装CPU版本Tensorflow2.1 打开##2.2 输入命令:conda install tensorflow2.3 测试在这里插入代码片结果3. 安装GPU版本Tensorflo...

推荐文章

热门文章

相关标签