アプリ版:「スタンプのみでお礼する」機能のリリースについて

コマンドラインで引数をわたす基本的なプログラムは
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を使ってます。

A 回答 (2件)

C は、コマンドラインから渡された文字列をStartup ルーチンが解釈


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

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

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

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

お礼日時:2002/10/26 19:03

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



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

としてみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/26 19:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!