Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按enter键只会在C中的输入中生成另一行_C_Xcode_Macos_Scanf - Fatal编程技术网

按enter键只会在C中的输入中生成另一行

按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

当我在输入时按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("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)?