使用atof()在C中进行输入验证

时间:2019-06-16 09:09:32

标签: c validation input atof

我正在编写一个简单的c程序,该程序使用总账单和小费百分比来计算小费。我想让程序验证输入,以便仅接受双精度值,而别无其他。

我尝试在while条件中使用scanf语句检查输入值是否为双精度型,但它创建了一个无限循环,因此我想到先将值作为字符串输入,然后使用atof()将其转换为双精度型函数,似乎工作正常,但仍然接受有效值,例如1aaa,12re(数字后跟任何数字)。 我的代码有三个问题:

  1. 我不希望接受上述类型的输入。
  2. 我想从代码中删除goto语句,并且
  3. 我不想使用固定的字符串大小char billAmount[20]
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char billAmount[20];
    double billAmt;
    ReadBill:
    printf("\nEnter the bill amount: ");
    scanf("%s", billAmount);
    if(atof(billAmount))
    {
        billAmt = atof(billAmount);
    }
    else
    {
        printf("Wrong Input! Please Try Again!");
        goto ReadBill;
    }
      return 0;
}

0 个答案:

没有答案