Linux提供了一个解析命令行参数的函数。

#include <unistd.h>

       int getopt(int argc, char * const argv[],
const char *optstring); extern char *optarg;
extern int optind, opterr, optopt;

使用这个函数,我们可以这样运行命令

./a.out -n -t 100

n后面不需要参数,t需要一个数值作为参数。

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#define ERR_EXIT(m) \
do { \
perror(m);\
exit(EXIT_FAILURE);\
}while(0) int main(int argc, char *argv[])
{
int opt;
while(1)
{
opt = getopt(argc, argv, "nt:");
if(opt == '?')
exit(EXIT_FAILURE);
if(opt == -1)
break; switch(opt)
{
case 'n':
printf("AAAAAAAA\n");
break;
case 't':
printf("BBBBBBBB\n");
int n = atoi(optarg);
printf("n = %d\n", n);
}
}
return 0;
}

当输入非法参数时,getopt返回’?’,当解析完毕时,返回-1.

如果需要参数,那么使用optarg获取,这是一个全局变量。

注意getopt的第三个参数”nt:”,说明可用的参数有n和t,t后面有一个冒号,说明t需要额外的参数。

运行结果如下:

5:30:22 wing@ubuntu msg ./getopt_test -n
AAAAAAAA
5:30:26 wing@ubuntu msg ./getopt_test -t
./getopt_test: option requires an argument -- 't'
5:30:31 wing@ubuntu msg ./getopt_test -t 100 1 ↵
BBBBBBBB
n = 100

最新文章

  1. 遭遇Web print
  2. Ackerman函数的栈实现
  3. [在线] html 转 pdf
  4. 移动前端UI选择
  5. u3d_shader_surface_shader_5
  6. HDU1224 DP
  7. 第三个Sprint冲刺第五天
  8. 通过live555实现H264 RTSP直播
  9. UIScrollView 滚动停止的时候一次调用此方法
  10. &lt;audio&gt;使用2
  11. iOS_67控件外观对照
  12. Android studio 打开别人的工程
  13. HBase replication使用
  14. @PostConstruct和@PreDestroy注解
  15. 配置ADB到Windows环境变量
  16. 第 1 章 JS变量、作用域
  17. postgresql命令
  18. python框架之Django(14)-rest_framework模块
  19. EBS 请求输出Html报表集成Echarts
  20. java基础面试题(JVM篇)

热门文章

  1. 删除某个ros包之后catkin_make冒错
  2. Qt笔记——Event
  3. c#读取LOG文件并解决读取提示被其他进程占用问题
  4. AC日记——codeforces Ancient Berland Circus 1c
  5. UVA 10340 All in All(字符串,朴素匹配)
  6. tensorflow-gpu 使用的常见错误
  7. Python与数据结构[3] -&gt; 树/Tree[1] -&gt; 表达式树和查找树的 Python 实现
  8. 并查集【p1197】[JSOI2008]星球大战
  9. 13、Django实战第13天:分页列表功能
  10. 【AC自动机】【动态规划】poj3691 DNA repair