ANSI C:使用功能检查用户输入时出错

mspaint

我正在尝试使用单个错误检查功能来检查多个其他功能中的错误。但是,在运行该程序时,它陷入了一个循环,不会中断。应用程序获得有效输入后,应继续下一个功能。但是,即使错误检查返回0,它也会重复fStartBalance函数。我是个初学者,所以我不太擅长故障排除。这是适用的代码:

/* Begin fValidateFloat */
int fValidateFloat(float input, float minValue, float maxValue)
{
    int failed = 0;

    while (input < minValue)
    {
        printf("\nError: Input too low, please enter a value greater than or equal to %.2f.", minValue);
        failed = 1;
        return failed;
    }
    while (input > maxValue)
    {
        printf("\nError: Input too high, please enter a value less than or equal to %.2f.", maxValue);
        failed = 1;
        return failed;
    }
} /* End fValidateFloat */

/* Begin fStartBalance */
float fStartBalance(void)
{
    float startBalance; /* Declare variable */
    int failed;

    while (failed = 1)
    {
        printf("\n\nNow enter your current balance in dollars and cents: "); /* Prompt user to input current balance */
        scanf("%f", &startBalance);
        fflush(stdin);
        failed = fValidateFloat(startBalance, 0, 3.4e+38);
    }

    return startBalance; /* Return variable */
} /* End fStartBalance */

谢谢你的帮助。

2501

fflush(stdin); 未定义

fValidateFloat()在不采用while语句的情况下,您永远不会返回任何值

        return failed;
    }
} /* End fValidateFloat */

在同一个函数中,while循环毫无意义,请使用if语句:

while (input < minValue)
{
    printf("\nError: Input too low, please enter a value grea%.2f.", minValue);
    failed = 1;
    return failed;
}

在while循环中将失败设置为1,而不是将其与1进行比较:

while (failed = 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Cancellation of *& in ANSI C

来自分类Dev

取消ANSI C中的*&

来自分类Dev

ANSI C的匿名结构

来自分类Dev

ANSI C中的接口/实现

来自分类Dev

位域中的枚举-ANSI C

来自分类Dev

ANSI C:如何摄取用户的输入,然后反向打印?

来自分类Dev

使用C和Visual Studio 2015的ANSI

来自分类Dev

ANSI C strstr()无法使用指针

来自分类Dev

ANSI C中的可变参数宏替代

来自分类Dev

ANSI C的便携式typedef

来自分类Dev

什么是C#中的ansi类?

来自分类Dev

带有Ansi转义的C ++ ctime

来自分类Dev

C ++命名管道WriteFileEx / ReadFile,unicode / ansi

来自分类Dev

DateTime解析ANSI C时间戳

来自分类Dev

在vb.net中使用ANSI代码

来自分类Dev

在zsh提示中使用ANSI转义序列

来自分类Dev

在vb.net中使用ANSI代码

来自分类Dev

使用 System.Console.ANSI 的 ASCII 动画

来自分类Dev

NodeJS - 使用 ANSI 编码保存 TXT 文件

来自分类Dev

检查用户输入时出错

来自分类Dev

如何用ANSI C编写ANSI-C之前的“ 0指针”?

来自分类Dev

如何在ANSI C中检查周数是偶数还是奇数?

来自分类Dev

功能和结构名称的命名约定,并符合ANSI C标准

来自分类Dev

将具有固定数组大小的ANSI C之前的函数声明转换为ANSI

来自分类Dev

如何使用Unicode将DOS ANSI(CP 437)文件转换为Unix ANSI?

来自分类Dev

如果用户按下Enter键而不输入数据,则ANSI C停止过程

来自分类Dev

如何在ANSI C中使用strsignal和WCOREDUMP?

来自分类Dev

何时使用bash ANSI C样式转义符,例如$'\ n'

来自分类Dev

Paul Graham的On Lisp(以及Ansi Common Lisp)中的撰写功能