我正在尝试从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指针(if else子句)之后。
发布于 2017-02-17 17:18:19
人们指出,我的输入缓冲区中有些东西是正确的。我的程序现在起作用时,我包括
while ((int ch = getchar()) != '\n' && ch != EOF);在fget()之前的代码中。在此之前,实际上存在着扫描函数。我永远感激那些回答我的人!抱歉,我把自己弄得像个白痴。这是我的第一批C程序之一,所以代码可能会“有点偏离”。再次谢谢。
https://stackoverflow.com/questions/42303156
复制相似问题