• ベストアンサー

引数の渡し方と受け方(argv)

メインで引数をもらい、それをパラメタチェック関数に 渡す場合、どのような形で渡せばいいですか? ※メインでargvを変数に格納しないで、 そのままargvを関数に渡す方法が分かりません。 int prm_chk(char *argv[]) { /* 処理省略 */ } int main (int argc, char *argv[]) { /* 処理省略 */ /* 以下のパラメタ(argv)の渡し方 */ if(prm_chk(*argv[]) != 0){ exit(-1); } exit(0); }

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

#1です。 argcも渡すべきだという意見が出ていますので、少し補足します。 argcを渡せば、それはそれで便利ですが、必ずしも必須ではありません。 argv[argc]はNULLになることが保証されているので、配列の終端は判別できます。argcがあれば、それなりに役に立つので、目的次第です。

その他の回答 (3)

  • ponnta
  • ベストアンサー率17% (31/179)
回答No.3

回答は他の方がされているので補足を argv[] は char * つまりアドレスが格納された配列ですが、 要素がいくつかるかは不定です。 そこで argc に有効なデータがいくつ格納されているかが、 格納されています。 argc で指定された以上のインデックスであくせすすると、 最悪の場合、CPU例外が発生します。

  • punyo-
  • ベストアンサー率25% (7/27)
回答No.2

prm_chk(*argv[]) != 0 ↓ prm_chk(argv) != 0 ですかね。 int prm_chk(char *argv[])もやるなら int prm_chk( int argc, char *argv[]) という風にしたほうが良いかと。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

誤)if(prm_chk(*argv[]) != 0){ 正)if(prm_chk(argv) != 0){

関連するQ&A