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

7 c atoi

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

请看以下内容:

for (h = 0; h < 5; h++)
{
    num[h] = atoi(temp[h]);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jam*_*lis 13

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

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

在C中,每个数字的值比前一个数字的值大1,因此保证可以正常工作.

atoi()不起作用的原因是因为它需要一个const char*参数,而不是一个char.该指针必须指向一个以空字符结尾的字符串.

  • @ .yahoo.co:"在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个值的值"(C99§5.2.1/ 3) ). (4认同)

Geo*_*che 5

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

char buf[2] = { temp[h], '\0' };
num[h] = atoi(buf);
Run Code Online (Sandbox Code Playgroud)