按输入刚才使得关于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”,美元);并且该解决方案也不工作)
答
我假设你正在使用%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'等等...... 他们你可以自动存储日,月,年,而不必担心分别询问他们的输入。
希望它能帮助!
http://ideone.com/fDWRjg有趣的是,你的代码对ideone工作正常。但埃德的解决方案也起作用。 – Baldrickk 2014-10-28 13:53:05
没有办法“永远持续下去”,而是会退出程序。但是要打印出所有内容,请使用fflush(stdout)关注每个printf();顺便说一句:目前的代码在我的linux系统上正常工作。 – user3629249 2014-10-28 14:46:56
1)解释“永远继续”2)'“%d%* c”'与'“%d”'不会影响您的代码。 3)scanf(“%d”,&dollars)'的返回值是多少?它应该是1。 – chux 2014-10-29 19:39:04