-1

我有一个 char 数组,我想从中获取第一个数字。

例如,如果我的 char 数组是 34 400 43 33。我想要 int 中的 34。

int FirstInt(char chars[])
{
    return atoi(chars.substr(0, bursts.find(' ')));
}

我在想这样的事情,但它是无效的。有任何想法吗?

4

2 回答 2

3
int FirstInt(char chars[])
{
    int x;
    sscanf(chars, "%d", &x);
    return x;
}
于 2012-10-23T16:18:07.373 回答
2

如果您想要的只是第一个数字,则不需要标记字符串或使用 sscanf :

return atoi(str);

从手册页

atoi() 函数将 nptr 指向的字符串的初始部分转换为 int

这意味着它会在找到非数字字符(如空格)时停止。

编辑:请注意,使用 atoi 检测错误是不可能的,因为它在某些实现中返回 0 错误并且不设置 errno (AFAIK),因此使用strtol可能会更好, 请参阅此链接Converting Strings to Numbers

于 2012-10-23T16:21:08.057 回答