C 如何避免在循环延迟期间接受输入的字符?
我这里有一个程序,它读取我们通过键盘输入的任何字符,打印它,等待1秒的延迟时间,然后重复整个过程 问题是,我不希望在1秒延迟期间输入的字符被视为要打印的有效输入。 仅需打印延迟1秒后接收到的输入 但使用此代码,即使在延迟期间输入的单个字符也不会被丢弃 我试过了fflush(stdin),但还是不行。我认为它确实清除了缓冲区 有什么想法吗C 如何避免在循环延迟期间接受输入的字符?,c,gcc,C,Gcc,我这里有一个程序,它读取我们通过键盘输入的任何字符,打印它,等待1秒的延迟时间,然后重复整个过程 问题是,我不希望在1秒延迟期间输入的字符被视为要打印的有效输入。 仅需打印延迟1秒后接收到的输入 但使用此代码,即使在延迟期间输入的单个字符也不会被丢弃 我试过了fflush(stdin),但还是不行。我认为它确实清除了缓冲区 有什么想法吗 #include<stdio.h> #include<time.h> void delay(int a) { clock_t t
#include<stdio.h>
#include<time.h>
void delay(int a)
{
clock_t t=clock();
while(clock() - t < a);
}
int main()
{
delay(5000);
char c;
while(1)
{
fflush(stdin);
while(!kbhit());
c=getch();
printf("\n%d %c", c, c);
delay(1000);
}
}
#包括
#包括
无效延迟(INTA)
{
时钟t=时钟();
while(clock()-t
fflush
仅为输出流定义。所以刷新stdin
并不能满足您的需要。一个简单的近似解决方案就是在延迟后立即使用getch
循环消耗所有输入。没有使用标准C的解决方案,需要使用依赖于实现的函数。为什么要这样做?这对用户来说是非常烦人的。@n.m.我正在尝试制作一个程序,该程序将显示用户输入的字符,然后延迟5秒。如果在延迟期间随机输入的字符都被考虑在内,这会让用户感到不舒服,因为用户似乎觉得即使他自己在延迟期间输入了输入,输入也不知从何而来。上面@n.m.的评论已经向您展示了如何做到这一点。只需继续调用getch
,直到kbhit
返回false。fflush
仅为输出流定义。所以刷新stdin
并不能满足您的需要。一个简单的近似解决方案就是在延迟后立即使用getch
循环消耗所有输入。没有使用标准C的解决方案,需要使用依赖于实现的函数。为什么要这样做?这对用户来说是非常烦人的。@n.m.我正在尝试制作一个程序,该程序将显示用户输入的字符,然后延迟5秒。如果在延迟期间随机输入的字符都被考虑在内,这会让用户感到不舒服,因为用户似乎觉得即使他自己在延迟期间输入了输入,输入也不知从何而来。上面@n.m.的评论已经向您展示了如何做到这一点。只需继续调用getch
,直到kbhit
返回false。