fgets不等待stdin

时间:2017-02-17 16:43:41

标签: c input keyboard

我正在尝试从fgets()读取输入,并且该功能不会等待输出(来自键盘)。我们被告知要使用fgets,因此scanf不是此选项。 fgets函数 main函数中由于某种原因而在其他函数中使用时无法正常工作。

这是代码

char name[21]={0x0}; //tried everything; not assigning value and NULL&\0

    printf("\nName: ");

    //fseek(stdin,0,SEEK_END);
    //rewind(stdin);
    //fflush(stdin);      //these don't help
    printf(stdin);        //for testing purposes, probably pointless
    fgets(nimi, 21, stdin);

程序将跳过fgets()并且不等待输入,稍后在我想要名称字符串的地方添加一些空字符串。但是name没有得到NULL值,因为有错误检查。我知道有很多人遇到这个问题,但我没有找到任何帮助。大多数人告诉使用scanf或其他一些功能。对于记录scanf()将在此处按预期工作。语法应该是正确的,因为它适用于main()。我可能甚至不知道stdin实际上是如何运作的,所以如果标题很愚蠢我会道歉。

此片段直接位于malloc for pointer(if else子句)

之后

1 个答案:

答案 0 :(得分:4)

人们指出我的输入缓冲区中有一些东西是正确的。我的程序现在可以在我包含

时使用
 while ((int ch = getchar()) != '\n' && ch != EOF);
在fgets()之前的代码中

。实际上在此之前有扫描函数。我永远感激那些回答的人!对不起,如果我让自己看起来像个笨蛋的代码。这是我的第一个C程序之一,所以代码可能是#34;有点"关闭。再次感谢。