按Enter键只在C中输入另一行

时间:2014-10-28 12:21:52

标签: c xcode macos scanf

我正试图将它输入到按输入输入的位置时,它将继续执行代码的下一部分 e.g:

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;
}

当我在终端上运行时,它会询问&#34; __美元中有多少便士?&#34;就像它应该的那样。

问题是当我输入7时,它会跳过一行并永远继续下去。我想要得到 当我按下回车键时,它将乘以7 * 100并输出&#34;有700便士&#34;。请 帮助

(对于那些之前看过这个的人,我忘记了删除(&#34;%d%* c&#34;,美元);并且只有scanf(&#34;%d&#34;,美元) ;而且那个解决方案也不起作用)

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我认为改变这个:

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

为:

scanf("%d", &dollars);

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

答案 2 :(得分:0)

你写错了这行!

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

将此更改为,

scanf("%d", &dollars);

以下是Demo.

了解有关以下行的更多信息,以及如何有效地使用它here,而article详细解释了这一点!

 scanf("%d%*c);

请参阅以下声明

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

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

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

希望它有所帮助!