按enter键只会在C中的输入中生成另一行
当我在输入时按enter键时,它将进入代码的下一部分 e、 g:按enter键只会在C中的输入中生成另一行,c,xcode,macos,scanf,C,Xcode,Macos,Scanf,当我在输入时按enter键时,它将进入代码的下一部分 e、 g: 这只是一个示例,但我的代码如下: #include <stdio.h> int main() { int pennies; int dollars; printf("How many pennies are in __ dollars?\n"); scanf("%d", &dollars); pennies = dollars*100; printf("Th
这只是一个示例,但我的代码如下:
#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;
}
#包括
int main()
{
整数便士;
整数美元;
printf(“多少便士是美元?\n”);
scanf(“%d”&美元);
便士=美元*100;
printf(“有%d个便士\n”,便士);
返回0;
}
当我在终端上运行它时,它会问“多少便士是美元?”就像它应该问的一样 问题是,当我输入7时,它只会跳过一行,永远继续下去。我正试着去 当我按下回车键时,它将乘以7*100并输出“有700便士”。请 救命啊
(对于之前看到这一点的人,我忘了删除scant(“%d%*c”,美元);而只有scanf(“%d”,美元);该解决方案也不起作用)我假设您正在使用
%d%*c
捕获输入数据后的换行符,但您应该知道scanf()
函数,对于许多格式字符串说明符,将首先跳过空白,包括换行符
如果您想进行基于行的输入,fgets()
通常是最好的方法,您可以使用找到的代码作为一个示例。这篇文章详细介绍了一种方法,通过这种方法,您可以避免在使用C进行用户输入时经常遇到的许多问题
底线是,通常最好使用fgets()
获取一个输入行,然后以您需要的任何方式处理它。我认为改变这一点:
scanf("%d%*c", &dollars);
致:
当%*c跳过字符输入时,应该可以解决您的问题,在这种情况下,可能是您的新行字符。您写错了这一行
scanf("%d%*c", &dollars);
把这个换成
scanf("%d", &dollars);
这是你的电话号码
了解更多关于以下行的信息,在哪里以及如何有效地使用它,这将非常详细地解释它
scanf("%d%*c);
见以下陈述
scanf("%d%*c%d",&a,&b)?
编译器在遇到%*c时接受输入,但不存储输入
它主要用于输入日期等信息。用户可能会将日期输入为2012年7月22日,因此编译器会获取整数“22”并存储它,然后忽略字符“/”并存储月份“7”,以此类推。。。
他们可以自动存储日、月、年,而不必担心单独请求他们的输入
希望有帮助 有趣的是,您的代码在ideone上运行良好。但Ed的解决方案也很有效。没有“永远继续下去”的办法,相反,它将退出该计划。但是,要将所有内容打印出来,请在每个printf()后面加上fflush(stdout);顺便说一句:当前的代码在我的linux系统上运行良好。1)解释“永远继续”2)%d%*c
与%d”
对您的代码没有影响。3) scanf(“%d”,&dollars)
的返回值是多少?应该是1。
scanf("%d%*c);
scanf("%d%*c%d",&a,&b)?