• ベストアンサー

質問させてください(かなり長いです)

int main(int argc,char *argv[]) { if(argc != 3){ char err_message[] = "ファイル名を指定して下さい、またはファイル名が多すぎる\n"; write(2,err_message, strlen(err_message)); exit(EXIT_FAILURE); } char *InFile = argv[1]; /*入力ファイル名設定*/ char *OutFile = argv[2]; /*出力ファイル名設定*/ myclass ob(InFile,OutFile); ob.open(); ob.main(); ob.close(); return(0); } このようなソースがありif(arg=!3)のところを実行して終了してしまいます。よくint main(int argc,char *argv[])という書き出しを見ますがmainの引数はどこで使われているのでしょうか。よろしければご教授ください。

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.3

実行形式を「hoge.exe」としたときに 実行するとき hoge.exe aaa bbb ccc とすれば argc=3 argv[0]=実行形式ファイルのフルパス argv[1]="aaa" argv[2]="bbb" argv[3]="ccc" となります。 VC6ならプロジェクト、プログラムの引数に「aaa bbb ccc」と記載して、デバッグしてください。

その他の回答 (3)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.4

#3です。すいません。 引数3つだとargc=3ではなく4ですね。 なので、argc=3でチェックをかけているので引数は2つです。 訂正します。

回答No.2

main関数の引数はプログラムを起動するときの引数ですよ たとえば上記のプログラムの名前がProgram1だった場合、 Program1 hikisu1 hikisu2 と起動するとargcに引数の数3が代入されて argvに2次元配列で文字列が代入されます。 if(argc != 3) を実行して終了する場合、起動するときの引数が3つじゃない場合が考えられます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

このプログラムはどのように実行しているのでしょうか. ちゃんと引数を 2個与えていますか?

noname#105193
質問者

補足

VC++6.0でビルドして実行しています。なんかそれだといけないような気がしてきました・・