tumanovalex, на C придётся изрядно перелопачивать
А почему у тебя 1 символ в юникод конвертируется?
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
// ...
lpMultiByteStr
[in] Pointer to the character string to be converted.
cbMultiByte
[in] Size, in bytes, of the string pointed to by the lpMultiByteStr parameter. If this value is –1, the string is assumed to be null terminated and the length is calculated automatically.
lpWideCharStr
[out] Pointer to a buffer that receives the translated string.
cchWideChar
[in] Size, in wide characters, of the buffer pointed to by the lpWideCharStr parameter.
If this value is zero, the function returns the required buffer size, in wide characters, and makes no use of the lpWideCharStr buffer.
Кстати, он корректно вообще преобразуется? То есть, сама функция отрабатывает как надо, и только в файл не то пишется?