#c语言 如何清空缓冲区?

用代码块功能插入代码,请勿粘贴截图
int main()
{
    char c;
flag:
    printf("请输入:");
    scanf("%c", &c);
    //fflush(stdin);
    if (c != 'a')
    {
        printf("输入错误!\n");
        goto flag;
    }
    else
    printf("Correct\n");
    return 0;
}
运行结果及报错内容

img

我想要达到的结果

这里我只想读入一个字符,但是用户可能会输入一串字符,会残留在缓冲区,所以我想在每次读取一个字符后把残留在缓冲区的内容清楚,百度到方法可以调用fflush()函数,但我试了下不知道为什么还是不行。
1.请问我这里该怎么正确调用fflush()清楚缓冲区?
2.有过类似处理经验的,可以讲述一下其他的方法解决这种问题吗?c和c++的都接受

fflush(stdin);放到scanf前面