2016-10-26 1 views
1

私はdocumentation for getopt()を読んだことがありますが、optargの説明はわかりません。getopt()の変数optarg

optargに関する一般的な情報を明示的かつ明確に説明するその他の情報源は見つかりません。

optargに関する一般的な情報を誰かが明確にして詳しく説明できるのであれば、私は感謝します。

私が知りたいのですが:

  • optargです。
  • どのようにoptargがその値を取得しますか。
  • optargの値を変更するコロンについては、ドキュメントに記載されています。

ドキュメントにはoptargの使用例があります。私は、変数そのものの明確で精巧な説明にもっと興味を持っています。 man pageが言う

+0

"optstringは正当なオプション文字を含む文字列です。このような文字の後にコロンが続く場合、このオプションは引数を必要とするため、getopt()は同じargv要素内の次のテキスト、またはoptarg内の次のargv要素のテキスト"それで、それが何度も何度も何度も読んでいます。 – paddy

+0

昨日似たような質問をしたことはありませんか? –

+0

@SouravGhoshはいです。 –

答えて

2

、(強調鉱山)をoptstringに

は、正当なオプション文字を含む文字列です。そのような文字の後にコロンが続く場合、このオプションには引数が必要です。したがって、getopt()は、を同じargv要素内の次のテキストへのポインタ、または次のargv要素のテキストをoptargに置きます。 2つのコロンはオプションがオプションのargを取ることを意味します。現在のargv要素にテキストがある場合(つまり、オプション名自体と同じ単語、たとえば "-oarg")、optargに返されます。そうでない場合、optargはゼロに設定されます。 [...]

以下のコードスニペットは使用方法を示しています。詳述すると

while ((opt = getopt(argc, argv, "nt:")) != -1) { 
    switch (opt) { 
    case 'n': 
     flags = 1; 
     break; 
    case 't': 
     nsecs = atoi(optarg); 
     tfnd = 1; 
     break; 
    default: /* '?' */ 
     fprintf(stderr, "Usage: %s [-t nsecs] [-n] name\n", 
       argv[0]); 
     exit(EXIT_FAILURE); 
    } 
} 

は、構文"nt:"を見て、私たちはオプションnは、任意の引数が、オプションtがそれに次の引数を持つことになります必要がないことを理解することができます。したがって、オプションtが見つかると、対応する引数はoptargに格納され、optargにアクセスすることによって取得できます。

ので、基本的には、getopt()があればオプションoptargは、そのオプション用指定された引数を返します返されます。

場合getopt()戻りtバイナリは、次に、./a.out -t 30ように実行された場合には、optargは(ないint、それを気に)30を含むストリングへのポインタを保持します。

+1

私はそれを得ました。ありがとう。 –

関連する問題