gpt4 book ai didi

c - Sscanf 并检测输入转换错误 [C]

转载 作者:行者123 更新时间:2023-11-30 18:32:01 25 4
gpt4 key购买 nike

我想将程序参数转换为 double 。简单:我想将一个 double 值作为参数传递给我的程序。但为了使其正确,我想检测转换错误。我发现 atof 不是一个好的选择,所以我改用 sscanf。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
argc --;
argv++;

double s;
int handle =-1;

handle = sscanf(*argv, "%lf", &s);
if(handle == -1)
{
fprintf(stderr, "Invalid input double!\n");

}else{ printf("%f\n", s);}

return 0;
}

但是如果输入错误,即: ./code blabla 它会打印出 0.0000000000 有什么问题吗?

最佳答案

使用strtod而不是 scanf 系列。如果无法解析任何数字(不幸的是,当数字实际上是 0.0 时),它会返回 0.0。您可以使用 endptr 参数来检查函数在哪里停止解析数字,以便可以用来检查字符串是否包含有效数字。当值无法表示时,它会设置errno

关于c - Sscanf 并检测输入转换错误 [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700546/

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