我试图实现函数,它将char *转换为wchar_t *。但问题是,wprintf显示不同的结果。我究竟做错了什么?char * to wchar_t *函数实现
wchar_t *toWchar(char *data)
{
if(!data)
{
return NULL;
}
int size = strlen(data);
if(!size)
{
return NULL;
}
char *temp = (char *)malloc(size * 2);
if(!temp)
{
return NULL;
}
int j = 0;
for(int i = 0; i < size; i++)
{
temp[j++] = data[i];
temp[j++] = '\0';
}
return (wchar_t *)temp;
}
编辑: 主要功能:
int main()
{
wchar_t *temp = toWchar("hello, world!");
if(temp)
wprintf("%ls\n", temp);
return 0;
}
你使用的是什么编码?什么编码字符,什么编码wchar_t?你的代码可以工作,如果字符是ASCII。并且请注意,您需要添加一个空终止符。 –
呜呜,这么多问题!你能给我一些提示怎么办?我只是编程的初学者,我不知道我使用的是哪种编码。如果这些信息对您有帮助,我在Linux机器上使用普通英语作为语言环境。 – user2399415
你需要弄清楚你使用的是什么编码。你为什么要转换为wchar_t?你为什么不使用库函数? –