从字符串C获取int值

时间:2014-01-20 21:28:53

标签: c string int

鉴于我有以下内容:

char str[] = "1524";
int nr;

我想在'nr'中获得数字1524

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

4 个答案:

答案 0 :(得分: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;
}
发生上溢/下溢时,

errno变为非零 *endptr != '\0'在最后检测到额外的垃圾 str != endptr会检测到""之类的字符串 与INT_MAX进行比较,INT_MIN intlongif (errno == ERANGE ...范围内有所不同。
也许最好做{{1}}。

答案 1 :(得分:4)

使用atoi功能:

nr = atoi(str);

还有atof(适用于float s)和atol(适用于long s)

所有这些功能都在<stdlib.h>中定义。

答案 2 :(得分:4)

标准库调用是atoi(),但还有strtol(),它有一些附加功能。 1)它允许你指定数字基数(如基数10),2)它返回指向它停止解析的字符串中的位置的指针。

两者都在标题<stdlib.h>

中定义

答案 3 :(得分:3)

atoi函数将从字符串转换为整数:

// requires including stdlib.h

int nr = atoi(str);