WEB开发网
开发学院操作系统Linux/Unix 使用 getopt() 进行命令行处理 阅读

使用 getopt() 进行命令行处理

 2008-11-13 08:31:44 来源:WEB开发网   
核心提示: 清单 6. 存根void display_usage( void ){puts( "doc2html - convert documents to HTML" );/* ... */exit( EXIT_FAILURE );}void convert_document(

清单 6. 存根

void display_usage( void )
{
  puts( "doc2html - convert documents to HTML" );
  /* ... */
  exit( EXIT_FAILURE );
}
void convert_document( void )
{
  /* ... */
}

最后,如清单 7 中所示,在 main() 函数中使用此结构。和优秀的开发人员一样,您需要首先初始化 globalArgs 结构,然后才开始处理命令行参数。在您的程序中,可以借此设置在一定情况下合理的缺省值,以便在以后有更合适的缺省值时更方便地对其进行调整。

清单 7. 初始化

int main( int argc, char *argv[] )
{
  int opt = 0;
  
  /* Initialize globalArgs before we get to work. */
  globalArgs.noIndex = 0;   /* false */
  globalArgs.langCode = NULL;
  globalArgs.outFileName = NULL;
  globalArgs.outFile = NULL;
  globalArgs.verbosity = 0;
  globalArgs.inputFiles = NULL;
  globalArgs.numInputFiles = 0;

清单 8 中的 while 循环和 switch 语句是用于本程序的命令行处理的代码部分。只要 getopt() 发现选项,switch 语句将确定找到的是哪个选项,将能在 globalArgs 结构中看到具体情况。当 getopt() 最终返回 -1 时,就完成了选项处理过程,剩下的都是您的输入文件了。

清单 8. 使用 getopt() 处理 argc/argv

opt = getopt( argc, argv, optString );
  while( opt != -1 ) {
    switch( opt ) {
      case 'I':
        globalArgs.noIndex = 1; /* true */
        break;
        
      case 'l':
        globalArgs.langCode = optarg;
        break;
        
      case 'o':
        globalArgs.outFileName = optarg;
        break;
        
      case 'v':
        globalArgs.verbosity++;
        break;
        
      case 'h':  /* fall-through is intentional */
      case '?':
        display_usage();
        break;
        
      default:
        /* You won't actually get here. */
        break;
    }
    
    opt = getopt( argc, argv, optString );
  }
  
  globalArgs.inputFiles = argv + optind;
  globalArgs.numInputFiles = argc - optind;

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 getopt 进行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接