問題:
打印一句中文
#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;
}
運行結果

