按输入刚才使得关于C中输入另一行

按输入刚才使得关于C中输入另一行

问题描述:

我试图使它的地方,当我按下输入回车键,将进入到代码的 例如下一部分:按输入刚才使得关于C中输入另一行

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

当我在终端运行它,它会问“有多少p ennies在__美元?“就像它应该。

问题是当我输入7时,它会跳过一条线并永远继续。我试图让 它,当我按下输入,它将乘以7 * 100和输出“有700便士”。请帮助 。 (对于之前看到这个的人,我忘记删除不足(“%d%* c”,美元);并且只有scanf(“%d”,美元);并且该解决方案也不工作)

+0

http://ideone.com/fDWRjg有趣的是,你的代码对ideone工作正常。但埃德的解决方案也起作用。 – Baldrickk 2014-10-28 13:53:05

+0

没有办法“永远持续下去”,而是会退出程序。但是要打印出所有内容,请使用fflush(stdout)关注每个printf();顺便说一句:目前的代码在我的linux系统上正常工作。 – user3629249 2014-10-28 14:46:56

+0

1)解释“永远继续”2)'“%d%* c”'与'“%d”'不会影响您的代码。 3)scanf(“%d”,&dollars)'的返回值是多少?它应该是1。 – chux 2014-10-29 19:39:04

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

如果你想做基于行的输入,fgets()通常是最好的方法,你可以使用代码here作为一个例子。这篇文章详细描述了,你能避免很多的C.

底线做用户输入时,经常遇到的问题的方法是,它通常是更好地得到与fgets()的输入线和然后过程中它在任何你需要的方式。

我想改变这个:

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

到:

scanf("%d", &dollars); 

应该解决您的问题,因为%* C跳过文字输入,在这种情况下,可能是你的新行字符。

你写了这行错了!

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

只是更改为,

scanf("%d", &dollars); 

这里是Demo.

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

scanf("%d%*c); 

参见下面的语句

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

编译器接受输入,当它遇到%* C,但并不保存。

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

希望它能帮助!