みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を使ってます。

投稿日時 - 2002-10-26 14:55:40

QNo.390142

困ってます

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

C は、コマンドラインから渡された文字列をStartup ルーチンが解釈
してmain 関数を呼び出すようになっていますので、パラメータを受け取る
側の引数の型だけを変更しても意味がありません。
→ 結局は、文字列を格納したアドレスが渡ってきます。

数値型に変換する場合は、
main(int argc, char *argv[])
{
int val1, val2;
val1 = atoi(argv[1]);
val2 = atoi(argv[3]);

}
のように、変換してやる必要があります。
※ 上記のプログラムは、パラメータの数をチェックしていませんのが、
  実際のプログラムではパラメータの数をチェックを忘れないように
  して下さい。

投稿日時 - 2002-10-26 15:16:50

お礼

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

投稿日時 - 2002-10-26 19:03:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

入力されたパラメータは文字列として取り込まれます。

printf("%s\n%s\n",argv[1],argv[3]);

としてみてください。

投稿日時 - 2002-10-26 15:15:10

お礼

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

投稿日時 - 2002-10-26 19:00:23

あなたにオススメの質問