flushall()不起作用 - 在C中

时间:2017-09-22 15:35:03

标签: c input buffer flush getchar

我必须使用getchar()函数逐个获取多个字符。

我必须在使用该函数后清理缓冲区,但flushall()不会这样做。在函数的第二次迭代之后,它获得'\n'作为输入。我尝试使用fflush()_flushall(),但没有人成功这样做。这是什么原因?请帮忙。

注意:我必须使用getchar()

int i;
char c;
for (i = 0; i < 5; i++)
{
    c = getchar();      
    printf("%c", c);
    _flushall();
}

1 个答案:

答案 0 :(得分:2)

如果你想在输入缓冲区中丢弃垃圾,一个好方法就是

public ActionResult Create()
{
    var myItem = new myItem();

    myItem.Description = string.Format("Item Created on {0:MM/dd/yyyy}", DateTime.Today);

    return View(myItem);
}

这将丢弃并包括下一个换行符或文件结尾,通常你想要的。

如果您正在尝试编写一个响应单击键的程序,当用户按下每个击键时,这对您不起作用,但这是因为整个int c; do c = getchar(); while (c != EOF && c != '\n'); 界面对您不起作用;您将需要使用其他内容,例如ncurses或GUI“小部件”库。