0

次のような引数を指定する必要があるこの C プログラムがあります。

./program -i 入力ファイル -o 出力ファイル

これが私の関連するコードのセクションです

  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);
      }

./program 次のようにプログラムを実行すると、次のエラーが発生する ように、case ステートメントをどのように変更すればよい ですか?Usage: prog -i inputfile -o outputfile

4

2 に答える 2

2

に電話する前getoptに確認してくださいargc

if ( argc == 1 )
{
  fprintf(stderr, "... ");
  return -1;
}
于 2013-09-23T05:09:20.357 に答える
2

参照inFileoutFileて NULL にする

次に、getopts ループ チェックの後、どちらかがまだ NULL かどうかを確認します。そうである場合は、使用法メッセージを出力して終了します

if (inFile == NULL || outFile == NULL)
    error_usage(argv[0]);
于 2013-09-23T05:09:21.963 に答える