正如我们大家都知道的那样,atoi
将char转换为数字。但是,如果你只想要一个数组元素而不是整个数组,你会怎么做?
请查看以下内容:
for (h = 0; h < 5; h++)
{
num[h] = atoi(temp[h]);
}
假设num是类型int
的数组,temp是类型char
的数组。这给了我一个恼人的转换问题:
从'char'到'const char *'
的转换无效
有关如何使用atoi将char数组的单个元素转换为int的任何建议吗?
答案 0 :(得分:13)
如果您只想转换单个字符,则无需使用atoi()
:
if (temp[h] >= '0' && temp[h] <= '9')
{
num[h] = temp[h] - '0';
}
else
{
// handle error: character was not a digit
}
在C中,每个数字的值比前一个数字的值大1,因此保证可以正常工作。
atoi()
不起作用的原因是因为它需要const char*
作为参数,而不是char
。该指针必须指向一个以空字符结尾的字符串。
答案 1 :(得分:5)
除了使用James所示的积分值之外,你可以将它放在一个单独的缓冲区中:
char buf[2] = { temp[h], '\0' };
num[h] = atoi(buf);