• ベストアンサー

C言語でコマンドラインの引数について。

コマンドラインで引数をわたす基本的なプログラムは main(int argc,char *argv[]){....] ですよね。 今回実行時に、 >実行ファイル名 123 + 233 といれたら、123+233を計算してくれるプログラムを作ろうとしています。 その場合、main(int argc,int *argv[]){} としたら、argv[1]に123が入って、argv[2]に+が入って、argv[3]に233が、入るというわけではないんでしょうか? とりあえず、確認で #include<stdio.h> main(int argc,int *argv[]) { printf("%d\n%d\n",argv[1],argv[3]); } としてみたんですが、実行結果は、とても長い数字がでてきてきました。 なにがいけないのか教えてください。 お願いします。 あとWindows MEでVC++6を使ってます。

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

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

C は、コマンドラインから渡された文字列をStartup ルーチンが解釈 してmain 関数を呼び出すようになっていますので、パラメータを受け取る 側の引数の型だけを変更しても意味がありません。 → 結局は、文字列を格納したアドレスが渡ってきます。 数値型に変換する場合は、 main(int argc, char *argv[]) { int val1, val2; val1 = atoi(argv[1]); val2 = atoi(argv[3]); } のように、変換してやる必要があります。 ※ 上記のプログラムは、パラメータの数をチェックしていませんのが、   実際のプログラムではパラメータの数をチェックを忘れないように   して下さい。

sin11
質問者

お礼

回答ありがとうございます。 文字列を、必要な形に直さなくてはいけなかったんですね。 atoiがあることすらわかってませんでした。 ありがとうございました。

その他の回答 (1)

  • bugmaru
  • ベストアンサー率38% (76/195)
回答No.1

入力されたパラメータは文字列として取り込まれます。 printf("%s\n%s\n",argv[1],argv[3]); としてみてください。

sin11
質問者

お礼

回答ありがとうございます。

関連するQ&A