char vs wchar_t

Я пытаюсь распечатать строку wchar_t*. Ниже приведен код:

#include <stdio.h>
#include <string.h>
#include <wchar.h>

char *ascii_ = "中日友好";  //line-1
wchar_t *wchar_ = L"中日友好";  //line-2

int main()
{
    printf("ascii_: %s\n", ascii_);  //line-3
    wprintf(L"wchar_: %s\n", wchar_);  //line-4
    return 0;
}

//Output
ascii_: 中日友好

Вопрос:

  1. Видимо, в строке 1 я не должен присваивать указателю char* символы CJK, но я только что это сделал, и вывод строки 3 корректен, так почему же? Как printf() в строке 3 может присваивать мне не-ascii символы? Он как-то знает кодировку?

  2. Я предполагаю, что код в строке-2 и в строке-4 корректен, но почему я не получил вывода в строке-4?

7
задан Alcott 21 September 2011 в 07:38
поделиться