如果用戶在調用fgetc(STDIN)
時鍵入多個字符,則對fgetc(STDIN)
的另一個調用將不會請求新字符,並將使用緩衝區中的下一個字符。我解決這個問題的一種方法是創建以下功能:如何在使用fgetc(STDIN)後在PHP中刷新stdin?
<?php
function get_char_from_stdin() {
if (($char = fgetc(STDIN)) != "\n")
fgets(STDIN);
return $char;
}
?>
有沒有比上面更優雅的解決方案?
P.S.如果我的術語關閉,請原諒我。請糾正任何濫用的條款。謝謝。
編輯:這是否在Windows上工作?我現在正在使用Mac。
它似乎是在Windows上工作。我試過'php -r'while($ char!='。'){$ char = fgetc(STDIN); echo $ char;}「'它起作用,我可以輸入字符! –
你爲什麼使用''。''? –
順便說一句,'$ char'在該腳本的開始處是未定義的,但除非您告訴PHP做其他事情,否則它將繼續愉快地繼續徘徊(我個人認爲這會起反作用)。 –