He escrito un pequeño programa en C:
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { wprintf(L"%s\n", setlocale(LC_ALL, "C.UTF-8")); wchar_t chr = L'┐'; wprintf(L"%c\n", chr); } ¿Por qué esto no imprime el carácter ┐ ?
En su lugar, imprime galimatías.
He comprobado:
wprintf es una versión de printf que toma una cadena ancha como su cadena de formato, pero por lo demás se comporta igual: %c aún se trata como char , no como wchar_t . Entonces, en su lugar, debe usar %lc para formatear un carácter ancho. Y dado que sus cadenas son ASCII, también puede usar printf . Por ejemplo:
int main() { printf("%s\n", setlocale(LC_ALL, "C.UTF-8")); wchar_t chr = L'┐'; printf("%lc\n", chr); }