ページ 11

超初歩的な質問なのですが

Posted: 2008年3月01日(土) 16:20
by ステル
Visual C++ 2005 Express Editionを使用しているのですが
下記のプログラムをコマンドラインから
プログラム名 xxx yyy
と実行した所、xxxと表示して欲しかったのですが
xとしか表示されませんでした
初歩的過ぎるのが調べても分かりませんでした
どなたか教えて頂けないでしょうか
お願いします。

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[/url])
{
printf("%s", argv[1]);
return 0;
}

Re:超初歩的な質問なのですが

Posted: 2008年3月01日(土) 17:22
by たかぎ
Unicode版になっていませんか?
その場合、
printf("%s", argv[1]);
ではなく、
printf("%ls", argv[1]);
とする必要があるかと思います。

Re:超初歩的な質問なのですが

Posted: 2008年3月01日(土) 17:28
by Justy
 アプリケーションの起動引数は間にスペースがあると、別の文字列と見なされ
別の arg[n]に格納されます。

 従って xxx yyyとしたときの yyyは argv[2]に格納されていますので
printfの "%s"を "%s%s"として、引数にargv[2]も加えると
出力されます。


 或いは引数を xxx yyyではなく、"xxx yyy"のようにダブルクォーテーションで
囲うと1つの文字列と見なしますので、argv[1]に全て格納されます。



 それと文字列に _TCHAR*型を使っているのであれば
printfより _tprintf()の方がいいのではないでしょうか。
[color=#d0d0ff" face="monospace]_tprintf(_TEXT("%s"), argv[1]); [/color]

Re:超初歩的な質問なのですが

Posted: 2008年3月01日(土) 17:34
by ステル
回答ありがとうございます。

%lsとした所、意図した通りに表示する事が出来ました。

Unicodeの問題に出会ったことが無かったので
さっぱり分からなかった初心者なのですが

本当にありがとうございました。

Re:超初歩的な質問なのですが

Posted: 2008年3月01日(土) 17:36
by ステル
神さんもありがとうございました。

型をより意識して今後は取り組みたいと思います。