標準輸入流(stdin)的檔案結束符(EOF)
使用stdin 作為程式的輸入來源時,很自然想知道它是否支援文件結束(EOF)指示。標準輸入的性質取決於其配置方式。
帶有來自檔案的輸入的 stdin
當 stdin 從檔案重定向時,它本質上有一個 EOF標記,類似於常規檔案流。這是因為檔案有一個定義的端點,當讀取操作到達檔案末端時,就會遇到 EOF 條件。
來自控制台的 stdin
但是、來自控制台的 stdin 輸入(稱為交互模式)本質上沒有 EOF 指示器。這是因為控制台輸入通常是使用者鍵入的連續字元流。
在控制台模式下模擬EOF
要在控制台模式下模擬EOF,平台-可以使用特定的組合鍵:
按下這些組合鍵後,程式將其視為輸入已到達末端。
手動將 EOF 加到 stdin
如前所述,來自控制台的 stdin 被視為無限流。若要手動新增 EOF,使用者必須使用 Ctrl D 或 Ctrl Z 組合鍵明確指示它。
使用fread 或read 函數的解決方案
在提供的程式碼中使用fread 或read 進行取樣,循環將無限期地繼續下去,直到遇到EOF 。若要在此場景中手動新增EOF 條件,請使用以下方法:
<br>int c;<br>while ((c = read(0, buffer, BUFSIZ)) > 0) {<pre class="brush:php;toolbar:false">// Read and process data from stdin
}
//當按下Ctrl D或Ctrl Z時,c將為-1,表示EOF
if (c == -1) {
// Handle EOF condition
}
這樣,循環可以在使用者按下EOF 組合時終止,從而允許程式相應地處理輸入的結束。
以上是當標準輸入流 (stdin) 處於交互模式時,如何模擬檔案結束 (EOF) 訊號?的詳細內容。更多資訊請關注PHP中文網其他相關文章!