char型からWCHAR

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

char型からWCHAR

#1

投稿記事 by おならちゃん。 » 14年前

char型からWCHAR文字への変換に失敗してしまいます。
サイトを見ながら進めていった結果このようなプログラムができました。
そして実行してみたら結果は C だけでました。これはc:\0.bmpのcなのでしょうか?
ひとつずつしか、変換できないのでしょうか?
これはループさせて、二文字目やって三文字目やって、という風にやるしかないのでしょうか?

コード:

#include <stdio.h>
#include <DxLib.h>
#include <locale.h>

errno_t mbstowcs_s(
				   size_t *pReturnValue,
				   wchar_t *wcstr,
				   size_t sizeInWords,
				   const char *mbstr,
				   size_t count
				   );


char *setlocale(
				int category,
				const char *locale
				);

int main(){
char zpath[256]="c:\\0.jpg";
WCHAR JpgFile[MAX_PATH];
WCHAR BmpFile[MAX_PATH]=L"c:\\0.bmp";
	size_t wLen=0;
	errno_t err=0;
	setlocale(LC_ALL,zpath);
err=mbstowcs_s(&wLen,JpgFile,50,zpath,_TRUNCATE);

printf("%s\n",JpgFile);
//ここでJPGからBMPにします。
/*if (JpgToBmp(JpgFile, BmpFile)) {
 // success
 }*/
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,BmpFile,SPIF_UPDATEINIFILE|SPIF_SENDWININICHANGE);
return 0;
}
ご回答宜しく御願いたします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: char型からWCHAR

#2

投稿記事 by softya(ソフト屋) » 14年前

WCHAR=ワイルドキャラクタ文字は文字コードが違うのでwprintfを使う必要があります。printfはマルチバイト文字用です。
あと書式文字列も"%s"ではなくL"%s"となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: char型からWCHAR

#3

投稿記事 by ISLe » 14年前

とりあえず
setlocale(LC_ALL,zpath); → setlocale(LC_ALL,"");
printf("%s\n",JpgFile); → printf("%ls\n",JpgFile);
でどうでしょう。
バッファサイズがなぜ50なのか分かりませんけど。

#mbstowcs_sよりMultiByteToWideCharを使うほうが良い気がする。

おならちゃん。

Re: char型からWCHAR

#4

投稿記事 by おならちゃん。 » 14年前

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

いろいろ試行錯誤させていただきました。
書き忘れてしまったのですが、表示したいのではなく、変換したかったのですが、
表示の方法さえわからなかったので、区別するために理解しやすかったです。
ありがとうございます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: char型からWCHAR

#5

投稿記事 by softya(ソフト屋) » 14年前

おならちゃん。 さんが書きました:ご回答ありがとうございます。

いろいろ試行錯誤させていただきました。
書き忘れてしまったのですが、表示したいのではなく、変換したかったのですが、
表示の方法さえわからなかったので、区別するために理解しやすかったです。
ありがとうございます。
ここのルールですので解決したコードの提示をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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