c - 我应该如何修复错误“比数据参数更多的 '%' 转换”?
问题描述
该代码应该将用户的输入(找零金额)转换为他们将收到的硬币数量并打印出来:
float dollars;
do
{
dollars = get_float("Change owed:");
}
while (dollars <= 0);
int cents = round(dollars * 100);
int coins;
for (coins = 0; cents > 0; coins++)
{
if (cents >= 25)
{
cents = cents - 25;
}
else if (cents < 25 && cents>=10)
{
cents = cents - 10;
}
else if (cents < 10 && cents >= 5)
{
cents = cents - 5;
}
else if (cents < 5 && cents >= 1)
{
cents = cents - 1;
}
}
printf("%i coins, coins\n");
但我收到了这个错误
cash.c:37:31: error: more '%' conversions than data arguments [-Werror,-Wformat]
printf("you will receive %i coins, coins\n");
~^
解决方案
糟糕的调用printf
功能。对于数据 tpe 的另一件事,int
您应该使用%d
转换/格式说明符。%i
格式说明符用于无符号整数数据类型,但您的硬币是有符号整数,因此请使用%d
或将硬币更改为无符号整数。
你的坏电话:
printf("%i coins, coins\n");
'\n'
是字符串格式的一部分:
printf("%d coins\n", coins);
推荐阅读
- javascript - 如何从json构造带有连接线的盒子
- javascript - WebDriverError:没有 ID 的活动会话
- json - 如何使用Angular 7在组件中显示嵌套json数组的项目
- asp.net-core - asp.net核心路由参数始终为空
- python - 比较 Pandas DataFrame 中的 2 列并填充第 3 列
- angular7 - TypeError:无法读取 Angular 7 中未定义的属性“值”
- ios - 如何调整 Xcode 中的值以取决于播放的设备(iPhone 与 iPad)
- c# - Azure Function 将队列消息的 ISO 8601 UTC DateTime 格式修改为 Local DateTime 格式
- c# - 我在哪个文件中插入了 Azure 机器人服务的 Microsoft 文档中的示例代码?
- arraylist - 如何修复我的代码,以便在购买后返回更新的值