7

所以我们可能都知道,atoi将字符转换为数字。但是,如果你只想要一个数组元素而不是整个数组,你会怎么做?

请看以下内容:

for (h = 0; h < 5; h++)
{
    num[h] = atoi(temp[h]);
}

假设 num 是一个 type 数组,int而 temp 是一个 type 数组char。这给了我一个恼人的转换问题:

从 'char' 到 'const char *' 的无效转换

关于如何使用 atoi 将 char 数组的单个元素转换为 int 的任何建议?

4

2 回答 2

14

如果您只想转换单个字符,则不需要使用atoi()

if (temp[h] >= '0' && temp[h] <= '9')
{
    num[h] = temp[h] - '0';
}
else
{
    // handle error:  character was not a digit
}

在 C 中,每个数字的值都比前一个数字的值大一个,因此可以保证这是有效的。

atoi()不起作用的原因是因为它以 aconst char*作为参数,而不是 a char。该指针必须指向一个空终止的字符串。

于 2010-07-14T23:42:59.967 回答
6

除了只使用 James 所示的整数值之外,您还可以将其放在单独的缓冲区中:

char buf[2] = { temp[h], '\0' };
num[h] = atoi(buf);
于 2010-07-14T23:43:03.070 回答