linux 中解析命令行参数 (getopt_long实例)

getopt_long.c

#include <stdio.h>  
#include <getopt.h>  


char *l_opt_arg;  
char* const short_options = "nsm:"; 

 
struct option long_options[] = {  
     { "name",     0,   NULL,    'n'     },  
     { "surname",  0,   NULL,    's'     },  
     { "message",     1,   NULL,    'm'     },  
     {      0,     0,     0,     0},  
}; 


 
int main(int argc, char *argv[])  
{  
     int c;  
     while((c = getopt_long (argc, argv, short_options, long_options, NULL)) != -1)  
     {  
         switch (c)  
         {  
         case 'n':  
             printf("My name is satellite.\n");  
             break;  
         case 's':  
             printf("My surname is yuan.\n");  
             break;  
         case 'm':  
             l_opt_arg = optarg;  
             printf("Send message: %s!\n", l_opt_arg);  
             break;  
         }  
     }  
     return 0;  
} 

运行结果:

satellite@ubuntu:/home/share$ gcc -o test getopt_long.c 

satellite@ubuntu:/home/share$ ./test --name
My name is satellite.

satellite@ubuntu:/home/share$ ./test --surname
My surname is yuan.

satellite@ubuntu:/home/share$ ./test --message
./test: option '--message' requires an argument

satellite@ubuntu:/home/share$ ./test --message hello
Send message: hello!

satellite@ubuntu:/home/share$ ./test -ns
My name is satellite.
My surname is yuan.

satellite@ubuntu:/home/share$ ./test -nsm hello
My name is satellite.
My surname is yuan.
Send message: hello!

satellite@ubuntu:/home/share$ ./test -ns -m hello
My name is satellite.
My surname is yuan.
Send message: hello!




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值