Как распечатать массив wchar_t для файла в 64 -разрядных Windows

StackOverflow https://stackoverflow.com/questions/9344477

  •  27-10-2019
  •  | 
  •  

Вопрос

Я хочу вывести массив WCHAR_T, заполненную из некоторых API Windows в файл, открытый Fopen:

wchar_t content[256];
SomeWindowsAPI(content, 256);
FILE *file;
file=fopen( "C:\\log","a+");
fputs(content , file); //????

Тем не менее, FPUTS ожидает массива const char*. Есть ли какой -нибудь другой C API для записи в файловую трубу, которая ожидает широких символов?

Это было полезно?

Решение

Для печати нулевой последовательности, широкий аналог fputs является fputws:

int fputws(const wchar_t *restrict ws, FILE *restrict stream);

В качестве альтернативы вы можете написать необработанные данные в своей широкой строке с fwrite:

wchar_t str[] = L"Hello World";
FILE * fp = /* ... */;

fwrite(str, sizeof(wchar_t), wcslen(str), fp);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top