仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1105|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之getopt() 对命令行参数举行剖析

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:17:32 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
无论谁倒了对双方阵营的粉丝们也是有害无益。getopt()对命令行参数举行剖析
intgetopt(intargc,char*constargv[],constchar*optstring);
给定了命令参数的数目(argc)、指向这些参数的数组(argv)和选项字符串(optstring)后,getopt()将前往第一个选项,并设置一些全局变量。利用不异的参数再次挪用该函数时,它将前往下一个选项,并设置响应的全局变量。假如不再有辨认到的选项,将前往-1,此义务就完成了。能够反复挪用getopt(),直到其前往-1为止.
getopt()所设置的全局变量包含:
optarg——指向以后选项参数(假如有)的指针。
optind——再次挪用getopt()时的下一个argv指针的索引。
optopt——最初一个已知选项。
个中optstring誊写格局以下:"f:e:ac",个中:暗示前一个字符是带参数的
例子:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

intmain(intargc,char*argv[]){
into;
externintoptind,optopt,opterr;
externchar*optarg;

opterr=0;
while((o=getopt(argc,argv,"f:e:a"))!=-1){
switch(o){
casef:
fprintf(stderr,"f%s
",optarg);
break;
casee:
fprintf(stderr,"e%s
",optarg);
break;
casea:
fprintf(stderr,"a%s
",optarg);
break;
case?:
if(optopt==foptopt==e)
fprintf(stderr,"Option-%crequiresanargument.
",optopt);
elseif(isprint(optopt))
fprintf(stderr,"Unknownoption`-%c.
",optopt);
else
fprintf(stderr,"Unknownoptioncharacter`x%x.
",optopt);
return1;
default:
printf("Unknownoptioncharacte");
abort();
}
}
}

必要注重的是:
变量optind,optopt,opterr,optarg都是全局变量,内部援用,界说时都必要加"extern"
"f:e:a"暗示-f和-e有参数,-a没有参数,编译为test,并测试
#./test-aabc-f"abc"-eabc
a(null)
fabc
eabc
#./test-aabc-f"abc"-e
a(null)
fabc
Option-erequiresanargument.

不外,如许的代码还在存在成绩,假设"-f"前面短少参数,它会误把"-e"看成"-f"的参数
#./test-aabc-f-e"abc"
a(null)
f-e
本文链接http://www.cxybl.com/html/net/winform/20120610/29307.html学习asp.net两个月有余了,除了对html、web控件比较熟悉(应该是说都能理解和接受)之外,竟不知道自己还会什么。看了两本书:《精通asp.net网络编程》(人民邮电出版社)、《asp.net实用案例教程》(清华大学出版社)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-10 00:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表