getopt函数的用法
2024-09-01 05:37:24
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
最新文章
- 遭遇Web print
- Ackerman函数的栈实现
- [在线] html 转 pdf
- 移动前端UI选择
- u3d_shader_surface_shader_5
- HDU1224 DP
- 第三个Sprint冲刺第五天
- 通过live555实现H264 RTSP直播
- UIScrollView 滚动停止的时候一次调用此方法
- <;audio>;使用2
- iOS_67控件外观对照
- Android studio 打开别人的工程
- HBase replication使用
- @PostConstruct和@PreDestroy注解
- 配置ADB到Windows环境变量
- 第 1 章 JS变量、作用域
- postgresql命令
- python框架之Django(14)-rest_framework模块
- EBS 请求输出Html报表集成Echarts
- java基础面试题(JVM篇)
热门文章
- 删除某个ros包之后catkin_make冒错
- Qt笔记——Event
- c#读取LOG文件并解决读取提示被其他进程占用问题
- AC日记——codeforces Ancient Berland Circus 1c
- UVA 10340 All in All(字符串,朴素匹配)
- tensorflow-gpu 使用的常见错误
- Python与数据结构[3] ->; 树/Tree[1] ->; 表达式树和查找树的 Python 实现
- 并查集【p1197】[JSOI2008]星球大战
- 13、Django实战第13天:分页列表功能
- 【AC自动机】【动态规划】poj3691 DNA repair