【问题标题】:Pressing enter just makes another line in input in C按回车键只会在 C 中输入另一行
【发布时间】:2014-10-28 12:21:52
【问题描述】:

我正在尝试在输入时按回车键的位置,它将继续执行代码的下一部分 例如:

int first
int second
int answer

printf("Enter first number\n");
scanf("%d", &first);

printf("Enter second number\n");
scanf("%d", &second);

first + second = answer

printf("%d", answer);
return 0

这只是一个例子,但我的代码是这样的:

#include <stdio.h>

int main()
{
    int pennies;
    int dollars;

    printf("How many pennies are in __ dollars?\n");
    scanf("%d", &dollars);
    pennies = dollars*100;
    printf("There are %d pennies\n", pennies);
    return 0;
}

当我在终端上运行它时,它会问“__ 美元有多少便士?”就像它应该的那样。

问题是当我输入 7 时,它只会跳过一行并一直持续下去。我想得到 当我按下回车键时,它将乘以 7 * 100 并输出“有 700 便士”。请 帮助。

(对于那些早先看到这个的人,我忘了删除 scant("%d%*c", dollar); 只是有 scanf("%d", dollar); 那个解决方案也不起作用)

【问题讨论】:

  • ideone.com/fDWRjg 有趣的是,您的代码在 ideone 上运行良好。但 Ed 的解决方案也有效。
  • 没有办法“永远持续下去”,而是退出程序。但是,要打印出所有内容,请在每个 printf() 之后使用 fflush(stdout);顺便说一句:当前代码在我的 linux 系统上运行良好。
  • 1) 解释“永远继续” 2) "%d%*c""%d" 不会对您的代码产生影响。 3) scanf("%d", &amp;dollars) 的返回值是多少?它应该是 1。

标签: c xcode macos scanf


【解决方案1】:

我想改变这个:

scanf("%d%*c", &dollars);

到:

scanf("%d", &dollars);

应该可以解决您的问题,因为 %*c 会跳过字符输入,在这种情况下可能是您的换行符。

【讨论】:

    【解决方案2】:

    这行你写错了!

    scanf("%d%*c", &dollars);
    

    只需将其更改为,

    scanf("%d", &dollars);
    

    这里是Demo.

    了解更多关于以下行在哪里以及如何有效地使用它here 和这个article 非常详细地解释它!

     scanf("%d%*c);
    

    请看下面的说法

    scanf("%d%*c%d",&a,&b)?
    

    编译器在遇到 %*c 时接受输入但不存储它。

    它主要用于获取日期等输入。用户可以输入日期为 22/7/2012,因此编译器获取整数“22”并存储它,然后忽略字符“/”并存储月份“7”等等...... 他们可以自动存储日、月、年,而不必担心单独询问他们的输入。

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      我假设您在输入数据后使用%d%*c 捕获换行符,但您应该知道scanf() 函数,对于许多格式字符串说明符,将首先跳过空格,包括换行符。

      如果你想做基于行的输入,fgets() 通常是最好的方法,你可以使用找到的代码here 作为一个例子。那篇文章详细介绍了一种方法,您可以通过该方法避免在 C 中进行用户输入时经常遇到的许多问题。

      最重要的是,通常最好使用fgets() 获取输入行,然后然后以您需要的任何方式处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-17
        • 1970-01-01
        • 1970-01-01
        • 2019-12-31
        • 2010-09-05
        相关资源
        最近更新 更多