当我们不向C可执行程序提供参数时如何处理异常

时间:2013-09-23 05:05:02

标签: c++ c file exception-handling

我有这个C程序,它应该给出如下参数:

./ program -i inputFile -o outputFile

这是我相关的代码部分

  while ((c = getopt(argc, argv, "i:o:")) != -1) {
            switch (c) {


                 case 'i':
                          inFile = strdup(optarg);
                 break;
                 case 'o':
                          outFile = strdup(optarg);
                 break;
                 default:

                          error_usage(argv[0]);

                      }
                }

这里也是error_usage函数:

void error_usage(char *prog)
      {
        fprintf(stderr, "Usage: %s  -i inputfile -o outputfile\n", prog);
        exit(1);
      }

如果我按照以下方式运行我的程序,我应该如何修改我的case语句: ./program 它给我以下错误? Usage: prog -i inputfile -o outputfile

2 个答案:

答案 0 :(得分:2)

在致电getopt之前,请检查argc

if ( argc == 1 )
{
  fprintf(stderr, "... ");
  return -1;
}

答案 1 :(得分:2)

请参阅inFileoutFile为空

然后在你的getopts循环之后检查是否仍然是NULL。如果是,则打印使用消息并退出

if (inFile == NULL || outFile == NULL)
    error_usage(argv[0]);