加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c语言scanf – fflush(stdin) – 不起作用

发布时间:2020-12-16 10:35:34 所属栏目:百科 来源:网络整理
导读:参见英文答案 Using fflush(stdin)????????????????????????????????????4个 当我多次使用scanf时,程序不会等待另一个输入.相反,它退出 我了解到我可以在scanf函数中的转换说明符之前放置一个空格 – 是的,这解决了问题,我想这与输入流有关,即 – 如果它是输
参见英文答案 > Using fflush(stdin)????????????????????????????????????4个
当我多次使用scanf时,程序不会等待另一个输入.相反,它退出

我了解到我可以在scanf函数中的转换说明符之前放置一个空格 – 是的,这解决了问题,我想这与输入流有关,即 – 如果它是输入流中的换行符,scanf将消耗它立刻.

scanf(" %f",&value);

但如果是这样 – 为什么我不能使用fflush(stdin)呢?我试过但它不起作用.

#include <stdio.h>

int main(void)
{
    float value;
    char ch;

    printf("input value: ");
    scanf("%f",&value);
    fflush(stdin);
    printf("input char: ");
    scanf("%c",&ch);

    return 0;
}

解决方法

fflush()用于清除输出缓冲区.由于您尝试清除输入缓冲区,因此可能会导致未定义的行为.

这是一个SO问题,解释了为什么这不是一个好的做法:

Using fflush(stdin)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读