你如何使用atoi来分配char数组的各个元素?

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

请看以下内容:

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

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

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

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

如果您只想转换单个字符,则不需要使用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 。 该指针必须指向一个以空字符结尾的字符串。

除了使用James所示的积分值之外,你可以将它放在一个单独的缓冲区中:

 char buf[2] = { temp[h], '\0' }; num[h] = atoi(buf);