- ベストアンサー
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を使ってます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
C は、コマンドラインから渡された文字列をStartup ルーチンが解釈 してmain 関数を呼び出すようになっていますので、パラメータを受け取る 側の引数の型だけを変更しても意味がありません。 → 結局は、文字列を格納したアドレスが渡ってきます。 数値型に変換する場合は、 main(int argc, char *argv[]) { int val1, val2; val1 = atoi(argv[1]); val2 = atoi(argv[3]); } のように、変換してやる必要があります。 ※ 上記のプログラムは、パラメータの数をチェックしていませんのが、 実際のプログラムではパラメータの数をチェックを忘れないように して下さい。
その他の回答 (1)
- bugmaru
- ベストアンサー率38% (76/195)
入力されたパラメータは文字列として取り込まれます。 printf("%s\n%s\n",argv[1],argv[3]); としてみてください。
お礼
回答ありがとうございます。
お礼
回答ありがとうございます。 文字列を、必要な形に直さなくてはいけなかったんですね。 atoiがあることすらわかってませんでした。 ありがとうございました。