我的主要意图是使getchar
在获取到字符后立即返回,而不是等待ENTER键。我尝试了以下方法:
int main()
{
setvbuf(stdin,NULL,_IONBF,0);
getchar();
return 0;
}
将此与setvbuf
的原型进行比较
setvbuf ( FILE * stream, char * buffer, int mode, size_t size );
它应该将 stdin
设置为无缓冲模式。
但是, getchar()
仍然会等待 ENTER
我看过类似这样的相关帖子
这些帖子提出了替代方法来使 stdin
无缓冲。 但我想知道为什么 setvbuf
方法不起作用
setvbuf()
...因此,在main()
中首先要做的事情就是调用它。 - pmgsetvbuf()
。我使用了你的程序,有使用和没有使用setvbuf()
都尝试过了,行为不同。没有使用setvbuf()
时,包括 ENTER 在内的所有字符都被消耗(即使是在键入 ENTER 后才消耗);使用setvbuf()
时,只有第一个字符被消耗,其余字符被用作后续的 bash 命令。 - pmg