我曾经使用fflush(stdin)
。我读到这不是摆脱额外角色的好方法,而且最好使用这样的fgets:
fgets(buffer,maxsize,stdin);
如果我想处理那些额外的字符......我应该使用什么样的缓冲区?我可以在某种“不归还的缓冲区”中重定向吗?或者我必须使用有限大小的数组?
提前致谢。
答案 0 :(得分:3)
答案 1 :(得分:2)
使用consumetoendofline(stdin)
代替:)
int consumetoendofline(FILE *where) {
int ch;
while (((ch = fgetc(where)) != '\n') && (ch != EOF)) /* void */;
return ch;
}
您可以(并且应该)甚至测试返回值以查看流是否已到达其结尾,或者是否有更多数据等待...