c语言中的getopt()、optind的使用
来源:互联网 发布:shopee搬家软件 编辑:程序博客网 时间:2024/06/06 01:06
getopt()会在最后一次执行时将argv变量进行排序,将参数(“d:t”)中提到的变量排序到最前面。这样后面的argc、argv变量通过optind计算就会非常清楚,经过遍历getopt()之后的参数就是没有被指定顺序的。
#include<stdio.h>#include<unistd.h>void print_arg(int argc, char *argv[]){ int i = 0; printf("----START PRINT----\n"); for (i = 0; i< argc; i++) { printf("%d\t%s\n", i, argv[i]); }}int main(int argc, char *argv[]){ char *delivery = ""; int thick = 0; int count = 0; char ch; while((ch = <span style="color:#CC33CC;">getopt(argc, argv, "d:t")</span>) != EOF) { print_arg(argc, argv); switch(ch) { case 'd': delivery = optarg; break; case 't': thick = 1; break; default: fprintf(stderr, "Unknown option: '%s'\n", optarg); return 1; } } print_arg(argc, argv); argc -= optind; argv += optind; printf("OPTIND:%d\n", optind); print_arg(argc, argv); return 0;}
程序执行的结果:
x_think@swork0:~$ gcc p152.c -o p152 && ./p152 -d now Anchovies Pineapple -t
----START PRINT----
0 ./p152
1 -d
2 now
3 Anchovies
4 Pineapple
5 -t
----START PRINT----
0 ./p152
1 -d
2 now
3 Anchovies
4 Pineapple
5 -t
----START PRINT----
0 ./p152
1 -d
2 now
3 -t
4 Anchovies
5 Pineapple
OPTIND:4
----START PRINT----
0 Anchovies
1 Pineapple
----START PRINT----
0 ./p152
1 -d
2 now
3 Anchovies
4 Pineapple
5 -t
----START PRINT----
0 ./p152
1 -d
2 now
3 Anchovies
4 Pineapple
5 -t
----START PRINT----
0 ./p152
1 -d
2 now
3 -t
4 Anchovies
5 Pineapple
OPTIND:4
----START PRINT----
0 Anchovies
1 Pineapple
代码片段来自 Head First C, by David Griffiths and Dawn Griffiths. Copyright © 2012 David Griffiths and Dawn Griffiths. All rights reserved. ISBN: 978-1-449-39991-7 引用时有删节
0 0
- c语言中的getopt()、optind的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt函数的简单使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言 getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言getopt()函数的使用
- C语言之getopt使用
- getopt()函数optind
- 详说CMDeviceMotion
- 分析mysql慢查询日志的好工具--mysqlsla
- 元素对象管理
- 黑马程序员_java多线程
- 第10周项目6贪财的富翁
- c语言中的getopt()、optind的使用
- 限制MSSQL Express的内存使用。
- FancyBox - 经典的 jQuery Lightbox 插件
- 新博客,走起!
- [unity-15] Unity性能优化三
- Hadoop到底能做什么?怎么用hadoop? 与 R语言简介 以及 MapReduce
- 从源代码分析Android-Universal-Image-Loader的缓存处理机制
- Java集合----HashSet的实现原理
- SRM 638 Div2