【问题标题】:Why space doesn't as same as enter when I use scanf?为什么我使用scanf时空格与输入不同?
【发布时间】:2014-10-21 19:56:32
【问题描述】:

我有这个代码:

int a, b;
scanf("%d", &a);
scanf("%d", &b);

printf("%d", a + b);

当我有这个输入时,程序可以正常工作:

1<enter>2<enter>

并返回3(如预期的那样!)

但是当我尝试使用&lt;space&gt; 键输入我的输入时:

1<space>2<space>

什么都没有发生,毕竟我必须按&lt;enter&gt; 才能让我的程序转到下一行。

那么问题是什么?为什么空间有时有效,有时无效?

【问题讨论】:

    标签: c scanf stdio


    【解决方案1】:

    stdin 通常是行缓冲的,而不是立即的。

    因此,在按下 enter 之前,您的程序根本没有得到输入。

    【讨论】:

    • 因为 enter 将所有输入发送到程序,包括 enter 在内。作为测试,尝试在两个scanf-调用之间打印一些内容。顺便说一句:无论如何,您都应该测试它们的返回值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多