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

C語言 getchar/putchar 緩衝區行為深度解析

     編輯:C 語言問答

題目輸入序列

a⏎ b⏎ cdef⏎

程式碼:

for (int k = 0; k <= 5; k++) {
    char c = getchar();
    putchar(c);
}

逐步執行追蹤

kgetchar 讀取來源putchar 輸出螢幕顯示
0'a'鍵盤輸入'a'a
1'\n'緩衝區殘留'\n'(換行)
2'b'鍵盤輸入'b'b
3'\n'緩衝區殘留'\n'(換行)
4'c'鍵盤輸入 "cdef\n" 首字元'c'c
5'\n'緩衝區殘留 (上次輸入的換行)'\n'(換行)

關鍵觀念

  • getchar() 從 **stdin 緩衝區** 讀取單一字元,**換行符 '\n' 也是合法字元**,會被讀取並輸出。
  • 使用者輸入 cdef⏎ 時,緩衝區實際存入 'c','d','e','f','\n'。但迴圈只跑 6 次 (k=0..5),第 4 次讀到 'c',第 5 次讀到 '\n',剩餘 'd','e','f' 留在緩衝區程式結束前未被讀取。
  • putchar(c) 輸出字元 c 的 ASCII 碼對應字形,若為控制字元 (如 \n) 則執行控制動作 (換行)。

輸出總結

a
b
c

(共三行可見字元,夾雜三次換行)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved