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

Visual Studio C++ 6.0 にてあるサンプルPGより修正を行っているのですが
(VS C++6.0初心者です)

CString aaa; // と定義し
aaa = _T("ABCDEFG"); //と文字列をセットしても
// aaaには "A"の先頭1文字しかセットされない

char bbb[20];
strcpy(bbb, "%s", aaa); // としても
// bbbには "A"しかセットされません。

何か設定などでこのようになるのでしょうか?
これをセットした文字列をセット、取得可能とならないものでしょうか?

A 回答 (5件)

 こんにちは。



 以下の様にGetString()を呼び出して見ては。

CString aaa;
aaa = _T("ABCDEF");
TCHAR tc[MAX_PATH];
::_stprintf_s(tc, _T("%s"), aaa.GetString());
    • good
    • 0
この回答へのお礼

ご回答くださった皆様いろいろとありがとうございました。
unicode(2byte文字コード)関係の設定が思い通りにならなかったようです。
基礎から学びなおしたいと思います。

sprintf(bbb,"%S",aaa) と %s を「%S」 に変更したらうまく行きました。

お礼日時:2010/03/07 09:52

#2、#3の方は


Unicode版を作成する前提で答えてますが
そんなこと考えてないという、貴方のために、、

とりあえず
VC6のプロジェクト設定の、プリコンパイル定義で
MBCSがあるか確認
UNICODEが定義されていると_TマクロはUnicode文字列に置換されるので
MBCSにしてみる。

設定を変えたくないなら
_Tを外せば動くと思います
    • good
    • 0

sprintfを使うつもりだったのなら、_stprintfに変更してください。


(No.2さんの指摘通り変数bbbはTCHAR型です。)

ワイド文字を使うプロジェクト設定になっているのにsprintfを使うと、
このよう現象になります。
(ワイド文字の'A'は、0x41,0x00になるため)
    • good
    • 0

strcpyの使用方法が間違っています。

関数の仕様を確認してください。

後、_Tマクロを使用して文字列をセットされているようですので、strcpy ではなく _tcscpy を使用されたほうがよいです。
せっかくの_Tマクロで汎用テキストマッピングを行っているのに、台無しです。
変数bbbについても同様で、char型 の変わりに TCHAR型 を使用されたようがよいです。
    • good
    • 0

>// aaaには "A"の先頭1文字しかセットされない


というのをどうやって確認したんですか?

>strcpy(bbb, "%s", aaa); // としても
>// bbbには "A"しかセットされません。

まずstrcpyの関数仕様を確認しましょう。

この回答への補足

すみません
strcpyではなく
sprintf(bbb,"%s",aaa) としても
aaa に "A"のみとなります。
TRACE( _T("%s"),aaa); で
デバッガで確認すると"ABCDEFG"が出力されます。
aaa,bbbはデバッガ上の値を見て確認しました。

補足日時:2010/02/20 20:04
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています