我正在尝试从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子句)
之后答案 0 :(得分:4)
人们指出我的输入缓冲区中有一些东西是正确的。我的程序现在可以在我包含
时使用 while ((int ch = getchar()) != '\n' && ch != EOF);
在fgets()之前的代码中。实际上在此之前有扫描函数。我永远感激那些回答的人!对不起,如果我让自己看起来像个笨蛋的代码。这是我的第一个C程序之一,所以代码可能是#34;有点"关闭。再次感谢。