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

システムの特殊なフォルダのパス名の取得を取得しようとしています。

VC++2008 Express EditionでSHGetSpecialFolderPathをつかって
パスを取ってみようとネット上の例だから拝借して
下記のようなソースを書いてみたのですが、
出てくる結果が、どの場所のパスをとっても「C」しか出てこないのです。

これってなにが原因なのでしょうか?
どなたかお教え願えないでしょうか?

[ソース]
#include<stdio.h>
#include<shlobj.h>
int main(){
TCHARbuf[_MAX_PATH];

SHGetSpecialFolderPath(NULL, buf, CSIDL_DESKTOPDIRECTORY, FALSE);

printf("デスクトップのパスは %s です\n",buf);

return 0x00;
}

A 回答 (2件)

プロジェクトの文字セットはどうなっています?



UNICODEで取得していてMBCSでprintf()していた場合、最初の1文字しか表示されないかと思いますが。

printf("デスクトップのパスは %s です\n",buf);

_tprintf(_T("デスクトップのパスは %s です\n"),buf)
としてみたらどうですか?
    • good
    • 0
この回答へのお礼

有難う御座います。

文字セットがおかしかったようです。
マルチバイト文字セットではなく、unicode文字セットにしていたために
表示されませんでした。

とりあえず、問題解決できました。

お礼日時:2010/09/03 11:40

printfの書式が違うのでは?



Unicode文字セットを使うにしている場合、TCHAR は wchar_t になりますので、

%S

を指定することになります。

printf 関数の型フィールド文字
http://msdn.microsoft.com/ja-jp/library/hf4y5e3w …

それと、もしかしたらsetlocaleも必要かも。
    • good
    • 0

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