#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;
}
どこが悪いのでしょうか?