Tôi đang cố gắng in ra một chuỗi wchar_t *. Mã đi dưới đây:char vs 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_: 中日友好
Câu hỏi:
Rõ ràng tôi không nên gán CJK để char * con trỏ ở dòng 1, nhưng tôi chỉ làm điều đó, và đầu ra của dòng -3 là đúng, vậy tại sao? Làm thế nào có thể printf() trong dòng-3 cho tôi những ký tự không phải ascii? Liệu nó biết mã hóa bằng cách nào đó?
Tôi giả sử mã ở dòng 2 và dòng 4 là chính xác, nhưng tại sao tôi không nhận được bất kỳ đầu ra nào của dòng 4?
Bạn đang sử dụng trình biên dịch nào? GCC mặc định là Utf-8 o hầu hết các nền tảng. Có vẻ như một vấn đề mã hóa với tôi. – cyco130
@ cyco130, vâng, gcc – Alcott