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:超初歩的な質問なのですが
Unicode版になっていませんか?
その場合、
その場合、
printf("%s", argv[1]);ではなく、
printf("%ls", argv[1]);とする必要があるかと思います。
Re:超初歩的な質問なのですが
アプリケーションの起動引数は間にスペースがあると、別の文字列と見なされ
別の arg[n]に格納されます。
従って xxx yyyとしたときの yyyは argv[2]に格納されていますので
printfの "%s"を "%s%s"として、引数にargv[2]も加えると
出力されます。
或いは引数を xxx yyyではなく、"xxx yyy"のようにダブルクォーテーションで
囲うと1つの文字列と見なしますので、argv[1]に全て格納されます。
それと文字列に _TCHAR*型を使っているのであれば
printfより _tprintf()の方がいいのではないでしょうか。
別の 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:超初歩的な質問なのですが
回答ありがとうございます。
%lsとした所、意図した通りに表示する事が出来ました。
Unicodeの問題に出会ったことが無かったので
さっぱり分からなかった初心者なのですが
本当にありがとうございました。
%lsとした所、意図した通りに表示する事が出来ました。
Unicodeの問題に出会ったことが無かったので
さっぱり分からなかった初心者なのですが
本当にありがとうございました。