gpt4 book ai didi

c - atof() 函数的替代方法,用于区分输入 0 和失败

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:14 24 4
gpt4 key购买 nike

我创建了一个函数来验证实数的输入。它运行良好,但由于 atof() 函数在失败时返回 0,因此无法输入 0 作为输入值。任何人都可以帮助解决这个问题?

float validate_float()
{
float num;
char str[8];
do
{
printf("enter a float number:");
fflush(stdin);
gets(str);
num=atof(str);
}
while(num==0);
return num;
}

最佳答案

是的,这是 atof() 的限制。

您可以使用 strtof()/strtod()相反。

语法:

double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);

注意:要区分实际输入 0无转换 0,您需要检查endptr


话虽如此,正如其他人也提到的,

  • 不要使用 fflush(stdin)。它调用 undefined behaviour .
  • 切勿使用 gets(),它可能会发生缓冲区溢出。使用 fgets()相反。

关于c - atof() 函数的替代方法,用于区分输入 0 和失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com