所以,我对编程完全不熟悉,而且我正在学习编程C.我正在尝试用C编写一个简单的程序来计算佣金如下
$rootScope
每当我尝试运行它时,会发生两件事。首先,如果我尝试在程序中输入任何小数,例如如果我说费率为12.5,它会立即跳过其他输入并完成程序,称佣金为0.00。如果我忽略小数,程序运行正常,直到结束,当我仍然得到佣金为0.00。有什么建议吗?
答案 0 :(得分:1)
"%.2f"
是scanf
的非法格式字符串,因此您的代码会导致未定义的行为。正确的格式字符串是"%f"
。
另外你应该检查scanf的结果。如果scanf
失败,则不会从输入中消耗坏数据,因此后续scanfs也会失败(这就是您看到其他输入被跳过的原因)。
例如:
if ( 1 != scanf("%f", &fRate) )
{
printf("Invalid input for fRate.\n");
exit(EXIT_FAILURE);
}
答案 1 :(得分:1)
您的格式说明符错误,如果您这样做必须使用编译器警告,那么您不会问这个,因为该格式说明符无效,您不能使用scanf()
来限制小数位数在关于SO的许多问题中讨论过,更重要的是你不需要,也没有意义,所以只需从格式说明符中删除.2
,然后检查scanf()
之前是否成功使用这些值。
答案 2 :(得分:1)
Activity
不是"%.2f"
的有效格式。有关详细信息,请参阅scanf()
manual page。
最简单的格式是scanf
。
此外,最好检查"%f"
的返回值,以便了解操作何时成功。
scanf