我正在使用我创建的宏在scanf之后清除缓冲区,但我被告知这不是一个好主意,因为“许多原因”。你能给我解释一下为什么和如何清洁吗?我知道使用fflush(stdin)是一个非常糟糕的想法,因为它没有定义。#define CLEAR_BUFFER do { c = getchar(); } while (c !如果是,人们如何清理缓冲区?
谢谢
char c;puts("Type a char");fflush(stdin);fgets(s,32,stdin);
如果没有fflush(),如果您键入一个字符,比如说"a",然后按enter键,输入缓冲区将包含"a\n",getchar()将窥视"a",但"\n“仍保留在缓冲区中,因此下一个fgets据我所知