問題:
打印一句中文
#include <stdio.h> int main() { char str[] = "你好,世界"; printf("%s\n", str); return 0; }
運行結果
接下來打印這句中文中的“好”字
#include <stdio.h> int main() { char str[] = "你好,世界"; printf("%c\n", str[1]); return 0; }
運行結果
它打印出來的是問號
原因:
char 類型是為 ascii 定義的,每個字符為 1 個字節,而中文占兩個字節
解決方案:
使用 Unicode 編碼
#include <stdio.h> #include <wchar.h> #include <locale.h> int main() { wchar_t str[] = L"你好,世界"; // 使用 wchar_t 定義 Unicode 編碼的字符類型,L 表示每個字符為兩個字節 setlocale(LC_ALL, "Chs"); // 設置語言環境為簡體中文 wprintf(L"%lc\n", str[1]); // 這里要用 L 和 l return 0; }
運行結果