我想知道在C语言中是否有一种将字符串转换为整数的替代方法。
我的代码中经常出现以下模式。
char s[] = "45";
int num = atoi(s);
那么,是否有更好的方法或其他方法?
有一个strtol
是更好的IMO。此外,我还喜欢strtonum
,如果你有的话,就用它吧(但要记住它不能携带)。
long long
strtonum(const char *nptr, long long minval, long long maxval,
const char **errstr);
你可能还对strtoumax
和strtoimax
感兴趣,它们是C99的标准函数。例如,你可以说
uintmax_t num = strtoumax(s, NULL, 10);
if (num == UINTMAX_MAX && errno == ERANGE)
/* Could not convert. */
总之,远离`atoi'。
调用atoi(str)应等同于。
(int) strtol(str, (char **)NULL, 10)
除了对错误的处理可能有所不同。如果该值不能被 表示,则行为未被定义。