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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ステル

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

#1

投稿記事 by ステル » 17年前

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:超初歩的な質問なのですが

#2

投稿記事 by たかぎ » 17年前

Unicode版になっていませんか?
その場合、
printf("%s", argv[1]);
ではなく、
printf("%ls", argv[1]);
とする必要があるかと思います。

Justy

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

#3

投稿記事 by Justy » 17年前

 アプリケーションの起動引数は間にスペースがあると、別の文字列と見なされ
別の 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:超初歩的な質問なのですが

#4

投稿記事 by ステル » 17年前

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

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

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

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

ステル

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

#5

投稿記事 by ステル » 17年前

神さんもありがとうございました。

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

閉鎖

“C言語何でも質問掲示板” へ戻る