从字符串C获取int值

Dra*_*scu 2 c string int

鉴于我有以下内容:

char str[] = "1524";
int nr;
Run Code Online (Sandbox Code Playgroud)

我想得到1524'nr'中的数字.

在C中实现这一目标的最佳方法是什么?

chu*_*ica 10

最好的错误检测是 strtol()

#include <errno.h>
#include <stdlib.h>

char str[] = "1524";
char *endptr;
errno = 0;
long l = strtol(str, &endptr, 10);
if (errno || *endptr != '\0' || str == endptr || l < INT_MIN || l > INT_MAX) {
  Handle_Error();
}
else {
  nr = l;
}
Run Code Online (Sandbox Code Playgroud)

errno发生上溢/下溢时变为非零.
*endptr != '\0'最后检测到额外的垃圾.
str != endptr检测到类似的字符串"".
比较INT_MAX,INT_MIN需要的时间intlong范围不同.
也许更好if (errno == ERANGE ....


Lin*_*ios 5

使用atoi函数:

nr = atoi(str);
Run Code Online (Sandbox Code Playgroud)

还有atof(对于floats)和atol(对于longs)

所有这些函数都定义在<stdlib.h>.