| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:求助getopt函数的使用方法
只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
已结贴  问题点数:10 回复次数:3 
求助getopt函数的使用方法
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include "getopt.h"

/*****************************************************************************
* DEFINES
*/
/**
* flags for different command-line options
*
* these options don't do anything - there's just here
* as examples
*/
#define FLAG_INTERACT   0x0001         /* interactive mode */
#define FLAG_FORCE      0x0002         /* force mode */
#define FLAG_RECURSIVE  0x0004         /* recursive mode */

/*****************************************************************************
* GLOBALS
*/
int flags = 0;                         /* store flags here */
int verbose = 5;                       /* verbosity level */
const char* in_fname = NULL;           /* input filename */
const char* out_fname = NULL;          /* output filename */

/*****************************************************************************
* help
*/
void help()
{
    printf(
    "getopt test program\n"
    "Usage: test [OPTION] [INPUT]\n"
    "   INPUT           set input filename (doesn't do anything)\n"
    "   -h              help menu (this screen)\n"
    "   -i              interactive mode (doesn't do anything)\n"
    "   -f              force mode (doesn't do anything)\n"
    "   -r              recursive mode (doesn't do anything)\n"
    "   -o filename     set output filename (doesn't do anything)\n"
    );
}

/*****************************************************************************
* MAIN
*/
int main(int argc, char* argv[])
{
    /* check arguments */
    while(1) {
        int c = getopt(argc, argv, "-ifrhv::o:");
        if(c == -1) break;
        switch(c) {
            case 'i': flags |= FLAG_INTERACT; break;
            case 'f': flags |= FLAG_FORCE; break;
            case 'r': flags |= FLAG_RECURSIVE; break;
            case 'h': help(); exit(0);
            case 'o': out_fname = optarg; break;
            case 1: in_fname = optarg; break;
            #ifdef DEBUG
            default:
                printf("Option '%c' (%d) with '%s'\n", c, c, optarg);
            #endif
        }
    }
    #ifdef DEBUG
        printf("optind at %d; argv[optind] = '%s'\n", optind, argv[optind]);
    #endif
    /* print out what we got */
    if(flags & FLAG_INTERACT) printf("in interactive mode\n");
    else printf("not in interactive mode\n");
    if(flags & FLAG_FORCE) printf("in force mode\n");
    else printf("not in force mode\n");
    if(flags & FLAG_RECURSIVE) printf("in recursive mode\n");
    else printf("not in recursive mode\n");
    if(in_fname) printf("input filename: %s\n", in_fname);
    else printf("no input filename\n");
    if(out_fname) printf("output filename: %s\n", out_fname);
    else printf("no output filename\n");
    return 0;
}
上述红色代码中switch选项中的  1 什么时候成立呢 ?
搜索更多相关主题的帖子: getopt 函数 
2010-06-03 23:17
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:7 
符号SOH   char c = 1;
2010-06-05 08:32
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
SOH 什么意思?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-06-07 23:07
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
发现对于没有选项的输入文件会返回 1

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-06-10 23:34
快速回复:求助getopt函数的使用方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038238 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved