解决linux下fflush(stdin)无效

scanf("%d", &i); 只能接受整数,如果用户输入了字母,则这个字母会遗留在“输入缓冲区”中。
因为缓冲中有数据,故而 scanf 函数不会等待用户输入,直接就去缓冲中读取,可是缓冲中的却是字母,
这个字母再次被遗留在缓冲中,如此反复,从而导致不停地输出

void clean_stdin(void)
{
    int c;
    do {
        c = getchar();
    } while (c != '
' && c != EOF);
}
原文地址:https://www.cnblogs.com/sdushmily/p/13048127.html