2012-02-17 6 views
0

UNIXのC++でコマンドラインパラメータをチェックする際に、どうやってエラーをチェックできますか?たとえば、パラメータを入力しなかった場合、セグメンテーションフォルトを取得するのではなく、エラーメッセージをどのように出力しますか?UNIXのC++でコマンドラインパラメータをチェックする方法は?

+3

[何を試しましたか](http://mattgemmell.com/2008/12/08/what-have-you-tried/)セグメンテーションフォルトが発生した場合の例を教えてください。 –

答えて

3
if (argc<2) 
{ 
    fprintf(stderr, "This program requires more parameters\n"); 
    return -1; 
} 
0

getoptを使用してください。

1

argcが1より大きくない場合、ユーザーは、コマンドラインパラメータを提供していない:

#include <stdio.h> 

int main (int argc, char *argv[]) 
{ 
    if (argc < 2) 
    { 
     printf("The command had no arguments.\n"); 
    } 
    return 0; 
} 
+0

'argv [0]'は常に実行されるプログラムの名前ではありません。 'execl'を使うと、NULLを含む何でもかまいません。参照:http://stackoverflow.com/a/275317/79455 – rve

+0

Re "最初の引数(argv [0])は常に実行されるプログラムの名前です":それは間違っています。 'argv [0]'がプログラムの名前であることを強制するのではなく、規約によってです。 'exec'ファミリの関数を使っていくつかのプログラムを呼び出すと、あなたは好きなように' argv [0] 'を作ることができます。名前(または特にパス)を 'argv [0]'として渡さないようにするいくつかの強力なセキュリティ上の理由があります。 –

+0

通知@DavidHammenありがとう:) – Meysam

0

は非常にコマンドライン解析のためのブーストprogram_optionライブラリをお勧めします。

関連する問題