用fgets刷新缓冲区

时间:2011-05-26 12:03:56

标签: c

我曾经使用fflush(stdin)。我读到这不是摆脱额外角色的好方法,而且最好使用这样的fgets:

fgets(buffer,maxsize,stdin);

如果我想处理那些额外的字符......我应该使用什么样的缓冲区?我可以在某种“不归还的缓冲区”中重定向吗?或者我必须使用有限大小的数组?

提前致谢。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

使用consumetoendofline(stdin)代替:)

int consumetoendofline(FILE *where) {
    int ch;
    while (((ch = fgetc(where)) != '\n') && (ch != EOF)) /* void */;
    return ch;
}

您可以(并且应该)甚至测试返回值以查看流是否已到达其结尾,或者是否有更多数据等待...