Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47360
  • 博文数量: 33
  • 博客积分: 1301
  • 博客等级: 中尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-31 21:06
文章分类
文章存档

2009年(33)

我的朋友

分类: LINUX

2009-06-13 17:14:58

 
Linux程序设计(第3版)
 
4.1.1 getopt
 
 
为了探索一下规律,就写了这个程序pz.c。做了一些实验性的输入,有不少收获

#include<stdio.h>
#include<unistd.h>
int main(int argc, char **argv){
    int ret;
    while((ret = getopt(argc, argv, "if:lr")) != -1){
        printf("ret = %c, optopt = %c, optind = %d, ", ret, optopt, optind);
        printf("optarg: %s\n", optarg);
    }
    printf("other arguments:\n");
    for(; optind < argc; optind++)
        printf("%s, %d\n", argv[optind], optind);
    exit(0);
}

 

gcc pz.c -o pz

输入:pz -i -f fuck you all -rl "hi there"

输出:
ret = i, optopt = ?, optind = 2, optarg: (null)
ret = f, optopt = ?, optind = 4, optarg: fuck
ret = r, optopt = ?, optind = 6, optarg: (null)
ret = l, optopt = ?, optind = 7, optarg: (null)
other arguments:
you, 5
all, 6
hi there, 7

发现规律:
调整前
pz -i -f fuck you all -rl "hi there"
0  1  2  3    4   5   6   7
调整后
pz -i -f fuck -rl you all "hi there"
0  1  2  3    4   5   6   7

开始:
(当前序号)选项, optind
(1)i, 2
(2)f, 4
(发现4,5都不行,6行)
(6)r, 6
(6)l, 7

(遍历完,进行调整)
optind指向调整后的第一个“其他参数”的序号

 

 

阅读(373) | 评论(0) | 转发(0) |
0

上一篇:经典的书!

下一篇:4.2环境变量

给主人留下些什么吧!~~