- ベストアンサー
質問させてください(かなり長いです)
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の引数はどこで使われているのでしょうか。よろしければご教授ください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
実行形式を「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)
#3です。すいません。 引数3つだとargc=3ではなく4ですね。 なので、argc=3でチェックをかけているので引数は2つです。 訂正します。
- shirousa01
- ベストアンサー率36% (36/98)
main関数の引数はプログラムを起動するときの引数ですよ たとえば上記のプログラムの名前がProgram1だった場合、 Program1 hikisu1 hikisu2 と起動するとargcに引数の数3が代入されて argvに2次元配列で文字列が代入されます。 if(argc != 3) を実行して終了する場合、起動するときの引数が3つじゃない場合が考えられます。
- Tacosan
- ベストアンサー率23% (3656/15482)
このプログラムはどのように実行しているのでしょうか. ちゃんと引数を 2個与えていますか?
補足
VC++6.0でビルドして実行しています。なんかそれだといけないような気がしてきました・・