我正在try 找出在C中是否有将字符串转换为整数的替代方法.
我经常在我的代码中设置以下模式.
char s[] = "45";
int num = atoi(s);
那么,有没有更好的方法呢?
我正在try 找出在C中是否有将字符串转换为整数的替代方法.
我经常在我的代码中设置以下模式.
char s[] = "45";
int num = atoi(s);
那么,有没有更好的方法呢?
有strtol
个更好的国际海事组织.另外,我喜欢strtonum
,所以如果你有的话,请使用它(但请记住,它不是便携的):
long long
strtonum(const char *nptr, long long minval, long long maxval,
const char **errstr);
您可能还对C99中的标准函数strtoumax
and strtoimax
感兴趣.例如,你可以说:
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)
只是对错误的处理可能有所不同.If the value cannot be represented, the behavior is undefined美元.