Я пытаюсь реализовать функцию, которая преобразует 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;
}
Какие кодировки вы используете? Какая кодировка для char и какая кодировка для wchar_t? Ваш код может работать, если символ ASCII. И обратите внимание, что вам нужно добавить нулевой терминатор. –
Woohoo, так много проблем! Не могли бы вы дать мне подсказки, что делать? Я просто начинаю программировать, я не знаю, какую кодировку я использую. Если эта информация поможет вам, я использую обычный английский язык как локаль на Linux-боксе. – user2399415
Вам нужно выяснить, какие кодировки вы используете. Почему вы хотите конвертировать в wchar_t? Почему вы не используете библиотечные функции? –