首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用strtol转换数字0?

如何用strtol转换数字0?
EN

Stack Overflow用户
提问于 2019-01-02 15:58:44
回答 1查看 366关注 0票数 2

我需要strtol将一些数字从0转换到255,如果0也是我需要转换的数字,如何检查0的转换?

代码语言:javascript
运行
复制
long conv = strtol(argv, &p, 10);
if (conv == 0)
{
    perror("Conversion error");
    exit(EXIT_FAILURE);
}
if ((conv >= LONG_MAX || conv <= LONG_MIN) && errno == 34);
{
    perror("Invalid Range!");
    exit(EXIT_FAILURE);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 16:00:35

在调用strtol之前,将errno设置为0。

然后在调用之后,检查errno的值。如果是0,你知道呼叫是成功的。另外,您需要检查*p是否为0。如果是这样的话,这意味着整个字符串在没有额外字符的情况下被成功解析。

代码语言:javascript
运行
复制
errno = 0;
long conv = strtol(argv, &p, 10);  
if (errno)
{
    perror("Conversion error");
    exit(EXIT_FAILURE);
}
else if (*p)
{
    perror("Not all characters converted");
    exit(EXIT_FAILURE);
}

手册页在“备注”部分中也提到了这一点:

由于strtol()可以在成功和失败时合法地返回0、LONG_MAX或LONG_MIN (strtol()的LLONG_MAX或LLONG_MIN ),因此调用程序应该在调用之前将errno设置为0,然后通过检查errno在调用后是否具有非零值来确定是否发生了错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54009387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档