我正试图将它输入到按输入输入的位置时,它将继续执行代码的下一部分 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;,美元) ;而且那个解决方案也不起作用)
答案 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;等等... 它们可以自动存储日,月,年,而不必担心单独询问他们的输入。
希望它有所帮助!