一尘不染

fflush()在Linux中不起作用

linux

我在Linux GCC中使用了fflush(),但是没有用。该功能还有其他选择吗?这是我的代码:

#include<stdio.h>
void main()
{
  char ch='y';
  while(ch=='y')
  {
    int a;
    printf("Enter some value:");
    scanf("%d",&a);
    fflush(stdin);
    printf("Do you want to continue?");
    scanf("%c",&ch)
  }

我得到的输出是:

Enter some value: 10

然后程序结束。就这样。我可以在Linux中做什么?有替代功能吗?


阅读 496

收藏
2020-06-03

共1个答案

一尘不染

不要使用fflush,而是使用以下函数:

#include <stdio.h>
void clean_stdin(void)
{
    int c;
    do {
        c = getchar();
    } while (c != '\n' && c != EOF);
}

fflush(stdin)取决于实现,但是此功能始终有效。在C中,使用是不当做法fflush(stdin)

2020-06-03