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

C語言 getch() 函數詳解:跨平台差異與可移植性建議

     編輯:關於C語言

getch() 基本特性

  • 頭文件:conio.h(非標準,Windows Turbo C/VC 專用)
  • 功能:無回顯讀取單字符,不等待 Enter。
  • 返回值:字符 ASCII 碼(int 型)。

常見用法

char ch = getch();        // 等待按鍵,賦值給 ch
getch();                  // 僅暫停,丟棄字符

三大平台 Enter 鍵返回值差異

平台Enter 產生序列getch() 返回
Windows\r\n (0x0D 0x0A)13 (\r)
Linux/Unix\n (0x0A)10 (\n)
macOS\r (0x0D)13 (\r)

getchar() 統一返回 10 (\n),可移植性更好。

易錯點與正確初始化(ncurses 兼容層)

#include <curses.h>   // Linux 下通常用 ncurses 提供 getch
int main() {
    initscr();        // 必須初始化
    cbreak();         // 關閉行緩衝
    noecho();         // 關閉回顯
    int ch = getch();
    endwin();         // 必須清理
    return 0;
}

若不調用 initscr()/endwin(),getch() 可能立即返回錯誤或導致終端異常。

可移植性建議

  • 教學/簡單暫停:用標準 getchar()。
  • 遊戲/即時互動:封裝平台差異層,Windows 用 _getch()(conio.h),Linux 用 ncurses。
  • 避免在跨平台專案直接使用 getch()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved