首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言漢字存入陣列輸出:字元編碼與scanf/printf實踐

     編輯:C 語言問答

中文字元在 C 語言中的處理

基本方法:char 陣列存儲多位元組編碼


#include 

int main() {
    char str[100];
    printf("輸入中文: ");
    scanf("%s", str);  // 僅讀單詞(空白截止)
    printf("輸出: %s\n", str);
    return 0;
}

關鍵限制

  • scanf("%s") 遇空白(空格、換行、Tab)停止,無法讀含空格字串
  • char 陣列按字節存儲,中文編碼(UTF-8/GBK)佔 2-3 字節/字
  • 終端機編碼必須與源碼編碼一致,否則顯示亂碼

進階:讀取整行含空格字串


#include 

int main() {
    char line[200];
    printf("輸入一行中文: ");
    fgets(line, sizeof(line), stdin);  // 讀整行含換行符
    // 移除尾部換行符
    size_t len = strlen(line);
    if (len > 0 && line[len-1] == '\n') line[len-1] = '\0';
    printf("輸出: %s\n", line);
    return 0;
}

字元編碼深度解析

寬字元版本 (Unicode 規範做法)


#include 
#include 
#include 

int main() {
    setlocale(LC_ALL, "");  // 關鍵:啟用當地環境
    wchar_t wstr[100];
    wprintf(L"輸入中文: ");
    wscanf(L"%ls", wstr);   // %ls 讀寬字串
    wprintf(L"輸出: %ls\n", wstr);
    return 0;
}

編碼一致性檢查清單

  1. 源碼檔案編碼:UTF-8 with BOM (推薦) 或 GBK
  2. 終端機編碼:Windows Terminal/PowerShell 設置 UTF-8 (chcp 65001)
  3. 編譯器選項:GCC -fexec-charset=UTF-8、MSVC /source-charset:utf-8 /execution-charset:utf-8
  4. 運行環境 locale 支援中文
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
編碼中文字節數適用場景C語言支援
GBK/GB23122 字節Windows 簡體中文舊系統char[] 直接存儲
UTF-83 字節(常用漢字)現代標準、Linux、Web、跨平台char[] 存儲,需庫處理
UTF-162 或 4 字節Windows API、Java、Qtwchar_t[] 配合宽字符函數