gpt4 book ai didi

c - C语言中如何判断 "1.0"是 float 还是整数?

转载 作者:行者123 更新时间:2023-11-30 18:22:59 24 4
gpt4 key购买 nike

我有一个程序,通过从文件中读取命令来接受订单。在这个文件中,有些命令是“浮点字符串”,如“1.0”,“2.0”,但它们是无效的,程序需要的是整数,如“1”,“2”。那么,如何让程序理解“1.0”这样的命令是无效的呢?有什么巧妙的方法可以做到这一点吗?

    char buf[CMDSIZE];
if(fgets(buf, CMDSIZE, stdin)) //buf likes this: "1.0 \n"
{
*prio = 1; *command = -1; *ratio =1.0;
// I need to make sure that command is not "1.0" or something like this
sscanf(buf, "%d", command);
switch(*command){....blahblah......}
}

谢谢。

最佳答案

使用strtol更容易。

这将解析一个以 10 为基数的整数。指针e将指向整数后的第一个字符。您可以检查以确保它是 NUL 字节,否则发出错误信号。 (您还必须检查输入是否不为空。)

如果您想在数字后允许空格/换行符,您也可以这样做。请注意,strtol 会吃掉前导空格,但不会吃掉尾随空格。

long v;
char *e;
v = strtol(buf, &e, 10);
if (!buf[0] || *e) {
error();
}
// v has number

脚注:使用 strtol 检查溢出和下溢有点奇怪。您必须先将errno设置为0,调用strtol,然后检查结果是LONG_MIN还是LONG_MAX,然后如果errno设置为ERANGE

关于c - C语言中如何判断 "1.0"是 float 还是整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10732274/

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