在允许输入之前循环在输入后运行多次

Loop runs multiple times after input before allowing input

所以每当我 运行 这段代码,代码 运行s 并打印出结果,然后它再次 运行s 并打印一些任意结果,一次又一次,然后它让我输入另一个循环。我找不到错误并尝试在线搜索。

感谢帮助

while (x > 0)
{
    printf("Please enter your money and nickels (ex. .63 and 3 nickels). \nEnter 0 to end program:\n");
    scanf("%c %lf %s %d", &dollar, &money, &andWord, &nickel_input);

    if (dollar == '0')
    {
        printf("Thanks for using the program!");
        return 0;
    }

    money *= 100;

    money -= nickels * 5;

    quarters = (money / 25);
    money -= quarters * 25;

    dimes = (money / 10);
    money -= dimes * 10;

    nickels = (money / 5);
    money -= nickels * 5;

    pennies = (money / 1);
    money -= pennies * 1;

    coins = quarters + dimes + nickels + pennies;

    nickels += nickel_input;

    printf("The fewest number of coins that you could have is %d:\n", coins);
    printf("# quarters: %d\n", quarters);
    printf("# dimes: %d\n", dimes);
    printf("# nickels: %d\n", nickels);
    printf("# pennies: %d\n\n", pennies);
}

顺便说一句,如果您不知道,这只是代码的摘录。

避免 scanf 在输入中留下垃圾的最好方法是读取带有 fgets 的行,然后解析带有 sscanf 的行。请务必检查两个函数的 return 值。如果到达文件末尾,fgets 将 return NULL。 sscanf returns 成功转换的次数,在您的情况下应为 4。