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

C 語言輸入處理:徹底搞懂 EOF 與換行符 \n 的區別

     編輯:程式設計疑難解答

C 語言輸入處理:徹底搞懂 EOF 與換行符 \n 的區別

初學 C 語言時,最容易混淆的概念莫過於 EOF 與 \n。兩者本質完全不同,混用會導致邏輯錯誤。

本質區別

項目EOF\n (換行符)
類型宏常量(通常為 -1)字符常量(ASCII 10)
含義表示「輸入流結束」,非實際字符表示「換行」,是真實存在於輸入流中的字符
適用場景檢測文件結束或標準輸入結束判斷行結束、字符串分割

正確用法示例

讀取所有字符直到 EOF

int c;
while ((c = getchar()) != EOF) {
    putchar(c); // 處理每個字符,包含 \n
}

使用 scanf 判斷輸入結束

int x;
while (scanf("%d", &x) != EOF) {
    // 成功讀取一個整數
}

注意:scanf 返回成功匹配的項數,輸入結束時返回 EOF(-1)。

常見誤區

  • 誤以為 EOF 是一個字符:它不會出現在輸入緩衝區中,無法用 if (c == EOF) 檢測單個字符(除非 c 是 int 且來自 getchar() 返回)。
  • 混淆 \n 與 \0:\n 是換行,\0 是字符串結束標記。

牢記:EOF 是狀態,\n 是數據。正確區分,輸入處理不再出錯。

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