Вы можете использовать функцию wcstombs()
(широкая строка в многобайтовую строку), предоставленную в stdlib.h
. Прототип выглядит следующим образом:
#include <stdlib.h>
size_t wcstombs(char *dest, const wchar_t *src, size_t n);
Он будет правильно преобразовывать ваши wchar_t
строка, предоставленная src
в строку char
(он же октеты) и запись ее в dest
с максимум n
байтами.
char wide_string[] = "Hellöw, Wörld! :)";
char mb_string[512]; /* Might want to calculate a better, more realistic size! */
int i, length;
memset(mb_string, 0, 512);
length = wcstombs(mb_string, wide_string, 511);
/* mb_string will be zero terminated if it wasn't cancelled by reaching the limit
* before being finished with converting. If the limit WAS reached, the string
* will not be zero terminated and you must do it yourself - not happening here */
for (i = 0; i < length; i++)
printf("Octet #%d: '%02x'\n", i, mb_string[i]);