首頁 >後端開發 >C++ >如何在標準輸入 (stdin) 上模擬 EOF?

如何在標準輸入 (stdin) 上模擬 EOF?

DDD
DDD原創
2024-10-27 23:29:29788瀏覽

How Do You Simulate EOF on Standard Input (stdin)?

決定標準輸入流(stdin)的EOF

在程式設計中,常見的輸入來源是標準輸入流(stdin),它從使用者鍵盤讀取輸入。然而,確定使用者何時完成輸入資料並到達文件末尾 (EOF) 有時可能具有挑戰性。

stdin 有 EOF 嗎?

預設, stdin 本質上沒有 EOF。這意味著從 stdin 讀取的程式將無限期地繼續,等待用戶的更多輸入。

將EOF 加入到stdin

如果需要手動模擬EOF在stdin 上,兩種常見的方法是:

  • Ctrl D (UNIX): 在基於UNIX 的系統中,按Ctrl D 表示檔案結束。
  • Ctrl Z (Windows): 在 Windows 作業系統中,按 Ctrl Z 通常表示輸入結束。

範例:

以下程式碼片段使用fread 從stdin 讀取數據,並使用Ctrl D 檢查EOF:

<code class="c">#include <stdio.h>

int main() {
    char buffer[BUFSIZ];
    int c;
    
    while ((c = fread(buffer, sizeof(char), BUFSIZ, stdin)) > 0) {
        // Process input...
    }

    return 0;
}</code>

當使用者按下Ctrl D 時,fread() 函數將傳回-1,表示檔案結束。這會觸發 while 迴圈的結束。

注意:

需要注意的是,上述 EOF 模擬方法依賴系統,並且可能無法在不同系統上一致地工作。所有平台。

以上是如何在標準輸入 (stdin) 上模擬 EOF?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn