我正在编写一个简单的c程序,该程序使用总账单和小费百分比来计算小费。我想让程序验证输入,以便仅接受双精度值,而别无其他。
我尝试在while条件中使用scanf语句检查输入值是否为双精度型,但它创建了一个无限循环,因此我想到先将值作为字符串输入,然后使用atof()将其转换为双精度型函数,似乎工作正常,但仍然接受有效值,例如1aaa,12re(数字后跟任何数字)。 我的代码有三个问题:
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;
}