首页 > 解决方案 > 我应该如何修复错误“比数据参数更多的 '%' 转换”?

问题描述

该代码应该将用户的输入(找零金额)转换为他们将收到的硬币数量并打印出来:

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");
                         ~^
                         

标签: c

解决方案


糟糕的调用printf功能。对于数据 tpe 的另一件事,int您应该使用%d转换/格式说明符。%i格式说明符用于无符号整数数据类型,但您的硬币是有符号整数,因此请使用%d或将硬币更改为无符号整数。

你的坏电话:

printf("%i coins, coins\n");

'\n'是字符串格式的一部分:

printf("%d coins\n", coins);

推荐阅读