sundar sundar - 6 months ago 30
Linux Question

fflush() is not working in Linux

I used the fflush() in Linux GCC but it did not work. Are there any alternatives for that function? Here is my code:

#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)
}


The output that I got is:

Enter some value: 10


Then the program ends. That's all. What can I do in Linux? Is there an alternative function?

Answer

Don't use fflush, use this function instead:

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

fflush(stdin) depends of the implementation, but this function always works. In C, it is considered bad practice to use fflush(stdin).