首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fgets不等待stdin

fgets不等待stdin
EN

Stack Overflow用户
提问于 2017-02-17 16:43:41
回答 1查看 3K关注 0票数 2

我正在尝试从fgets()读取输入,这个函数不会等待输出(从键盘)。我们被告知要使用fgets,所以在这里scanf不是一种选择。当fgets函数出于某种原因在main函数中使用时,它会工作,但不会在其他函数中使用。

这是密码

代码语言:javascript
复制
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子句)之后。

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 17:18:19

人们指出,我的输入缓冲区中有些东西是正确的。我的程序现在起作用时,我包括

代码语言:javascript
复制
 while ((int ch = getchar()) != '\n' && ch != EOF);

在fget()之前的代码中。在此之前,实际上存在着扫描函数。我永远感激那些回答我的人!抱歉,我把自己弄得像个白痴。这是我的第一批C程序之一,所以代码可能会“有点偏离”。再次谢谢。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42303156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档