- ベストアンサー
引数の渡し方と受け方(argv)
メインで引数をもらい、それをパラメタチェック関数に 渡す場合、どのような形で渡せばいいですか? ※メインでargvを変数に格納しないで、 そのままargvを関数に渡す方法が分かりません。 int prm_chk(char *argv[]) { /* 処理省略 */ } int main (int argc, char *argv[]) { /* 処理省略 */ /* 以下のパラメタ(argv)の渡し方 */ if(prm_chk(*argv[]) != 0){ exit(-1); } exit(0); }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 argcも渡すべきだという意見が出ていますので、少し補足します。 argcを渡せば、それはそれで便利ですが、必ずしも必須ではありません。 argv[argc]はNULLになることが保証されているので、配列の終端は判別できます。argcがあれば、それなりに役に立つので、目的次第です。
その他の回答 (3)
- ponnta
- ベストアンサー率17% (31/179)
回答は他の方がされているので補足を argv[] は char * つまりアドレスが格納された配列ですが、 要素がいくつかるかは不定です。 そこで argc に有効なデータがいくつ格納されているかが、 格納されています。 argc で指定された以上のインデックスであくせすすると、 最悪の場合、CPU例外が発生します。
- punyo-
- ベストアンサー率25% (7/27)
prm_chk(*argv[]) != 0 ↓ prm_chk(argv) != 0 ですかね。 int prm_chk(char *argv[])もやるなら int prm_chk( int argc, char *argv[]) という風にしたほうが良いかと。
- jacta
- ベストアンサー率26% (845/3158)
誤)if(prm_chk(*argv[]) != 0){ 正)if(prm_chk(argv) != 0){