代码之家  ›  专栏  ›  技术社区  ›  thyrgle

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

  •  7
  • thyrgle  · 技术社区  · 14 年前

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

    请看以下内容:

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

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

    从“char”到“const char*”的转换无效

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

    2 回复  |  直到 14 年前
        1
  •  13
  •   kriss    14 年前

    如果您只想转换一个不需要使用的字符 atoi() :

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

    在C语言中,每个数字的值都比前一个数字的值大一个,所以这是可以保证的。

    原因在于 ATO() 不起作用是因为它需要 const char* 作为它的论点,不是 char . 该指针必须指向以空结尾的字符串。

        2
  •  5
  •   Georg Fritzsche    14 年前

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

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