SJISからUTF8への変換

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

SJISからUTF8への変換

#1

投稿記事 by exce » 12年前

コード:

#include <stdio.h>
#include <windows.h>

void ShiftJisToUTF8(char *szShiftJis,char **out)
{
	char bufUTF8[MAX_PATH];
	wchar_t bufUnicode[MAX_PATH];
	int iLenUtf8;
	int iLenUnicode;

	// まずUniocdeに変換する
	// サイズを計算する
	iLenUnicode = MultiByteToWideChar(CP_ACP,0,szShiftJis,strlen(szShiftJis)+1,NULL,0);

	if(iLenUnicode <= sizeof(bufUnicode)/sizeof(bufUnicode[0]))
	{
		MultiByteToWideChar(CP_ACP,0,szShiftJis,strlen(szShiftJis)+1,bufUnicode,MAX_PATH);

		// 次に、UniocdeからUTF8に変換する
		// サイズを計算する
		iLenUtf8 = WideCharToMultiByte(CP_UTF8,0,bufUnicode,iLenUnicode,NULL,0,NULL,NULL);

		if(iLenUtf8 <= sizeof(bufUTF8))
		{
			WideCharToMultiByte(CP_UTF8,0,bufUnicode,iLenUnicode,bufUTF8,sizeof(bufUTF8),NULL,NULL);
		}
	}

	strcat(*out,bufUTF8);
}

int main()
{
	char *szShiftJis = "ShiftJisからUTF8への変換テスト";
	char *buf;

	ShiftJisToUTF8(szShiftJis,&buf);

	printf("%s",buf);

	return 0;
}
コンパイルは通ったのですが、実行すると強制終了してしまいます。
どこが悪いのでしょうか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: SJISからUTF8への変換

#2

投稿記事 by h2so5 » 12年前

35行目のbufが有効なメモリ領域を指していません、

閉鎖

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