如果用户在调用fgetc(STDIN)
时键入多个字符,则对fgetc(STDIN)
的另一次调用将不会要求新字符,并将使用缓冲区中的下一个字符。我解决这个问题的一种方法是创建以下函数:
<?php
function get_char_from_stdin() {
if (($char = fgetc(STDIN)) != "\n")
fgets(STDIN);
return $char;
}
?>
是否有比上述更优雅的解决方案?
P.S。如果我的术语关闭,请原谅我。请更正任何滥用的条款。感谢。
编辑:这适用于Windows吗?我现在正在使用Mac。
答案 0 :(得分:0)
STDIN是缓冲的,所以为了在调用函数后输入第一个字符,你必须打开一个带有空缓冲区的新流。
function get_char_from_stdin() {
$stdin = fopen('php://stdin', 'r');
return fgetc($stdin);
}