新浪微博 登陆  注册   设为首页 加入收藏

学PHP >> 服务器架构 >> getopt()和getopt_long()用法

getopt()和getopt_long()用法

查看次数36533 发表时间2012-10-08 23:15:51

原文链接:http://home.eeworld.com.cn/my/space.php?uid=101752&do=blog&id=43897

如果在LINUX环境下面你想做与用户交互的程序开发的话,这个函数我想会对你有很大的帮助!~

getopt用法

有关系统调用getopt:
声明:
         #include <unistd.h>
         int getopt(int argc, char *const argv[], const char *optstring);

         extern char *optarg;
         extern int optind, opterr, optopt;

使用方法:在while循环中反复调用,直到它返回-1。每当找到一个有效的选项字母,它就返回这个字母。如果选项有参数,就设置optarg指向这个参数。
当程序运行时,getopt()函数会设置控制错误处理的几个变量:
char *optarg ──如果选项接受参数的话,那么optarg就是选项参数。
int optind──argv的当前索引,当while循环结束的时候,剩下的操作数在argv[optind]到argv[argc-1]中能找到。
int opterr──当这个变量非零(默认非零)的时候,getopt()函数为"无效选项”和“缺少选项参数”这两种错误情况输出它自己的错误消息。可以在调用getopt()之前设置opterr为0,强制getopt()在发现错误时不输出任何消息。
int optopt──当发现无效选项的时候,getopt()函数或者返回'?'字符,或者返回字符':'字符,并且optopt包含了所发现的无效选项字符。

表头文件:#i     nclude     <unistd.h>   
    
    函数声明:int     getopt(int     argc,     char     *     const     argv[],     const     char     *optstring);   
    函数说明:getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数optstring     则代表欲处理的选项字符串。此函数会返回在argv     中下一个的选项字母,此字母会对应参数optstring     中的字母。如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg     即会指向此额外参数。如果getopt()找不到符合的参数则会印出错信息,并将全域变量optopt设为“?”字符,如果不希望getopt()印出错信息,则只要将全域变量opterr设为0即可。   
    
 返回值:如果找到符合的参数则返回此参数字母,如果参数不包含在参数optstring     的选项字母则返回“?”字符,分析结束则返回-1。

   
    #include     <unistd.h>   
    #include     <stdio.h>   
    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     );   
        
(转发请注明转自:学PHP)    


  相关推荐



1楼 瀛?HPER说: 2014-02-03 07:54:15
!S!WCRTESTTEXTAREA000000!E!
2楼 瀛?HPER说: 2014-02-04 20:08:37
!S!WCRTESTTEXTAREA000000!E!
3楼 Lyzbeth说: 2016-12-22 05:27:48
Actually, it can be both as he is called Glenn Quagmire. It&#8217;s just in family guy all the men call him Quagmire. In the episode where they first introduce himself he calls himself Glenn Quagmire, but good point if Glenn isn18#2&7;t working for some people.

  发表评论
昵称:
(不超过20个字符或10个汉字)
内容: