strtol 函数将长整数的字符串表示形式转换为长值。但是,在使用此函数时,了解如何正确处理错误至关重要。
在给定的代码中,由于错误的假设而出现了问题。该代码依赖于这样一个事实:如果 strtol 成功转换字符串,则第二个参数应等于 NULL。然而,这个假设并不总是成立。
为了有效地检测 strtol 的错误,有必要遵循正确的错误处理准则:
这是遵循以下原则的 parseLong 函数的修订版本:
static long parseLong(const char *str) { errno = 0; char *temp; long val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">bool parseLong(const char *str, long *val) { errno = 0; char *temp; *val = strtol(str, &temp, 0); if (temp == str || *temp != '' || ((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)) { return false; } return true; }
或者,单独的错误处理从转换结果来看,可以使用修改后的接口:
以上是如何正确使用strtol将字符串转换为长整数并处理潜在的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!