c語言中的printf和putchar都是為ascii碼准備的。要想顯示中文,必須通過<wchar.h>這個頭文件中(和對應的庫)提供的函數wprintf和putwchar來實現。
在使用wprintf之前,設置c語言自身的環境,使用setlocale即可。有<locale.h>提供該函數。示例如下
1 #include<stdio.h> 2 #include<wchar.h> //putwchar wprintf wchar_t 3 #include<locale.h> //setlocale 4 5 int main(void) 6 { 7 //讓wprintf可以輸出中文s 8 setlocale(LC_ALL, "zh_CN.UTF-8"); //注意這里的zh_CN.UTF-8不能寫成chs 9 10 wprintf(L"--%c--%lc--\n", L'a', L'中'); 11 putwchar(L'中'); 12 putwchar(L'\n'); 13 14 wchar_t a = L'中'; 15 char b = 'b'; 16 wchar_t *c = L"我是中國好少年"; 17 char *d = "我是中國好少年"; 18 char *e = "e我是中國好少年"; 19 wprintf(L"--%lc--%c--\n", a, b); 20 21 wprintf(L"--%ls--%s--%s--\n", c,d,e); 22 }
結果如下
注意:
1. wprintf的format字符串,必須使用L標識,表示這是一個寬字符串,才能為wprintf所用。
2. wprintf中,使用%c或%s可以打印正常的ascii字符或ascii字符串,也可以打印寬字符串。但是要打印寬字符和寬字符串,最好還是用%lc或%ls。
3. 用了wprintf,最好別用printf了,我遇到過問題。