char数组到整数数组

时间:2012-08-17 14:48:46

标签: c

我使用scanf输入了一组字符作为输入,实际上就像"1854?156X"一样。

(使用scanf("%c",&input[i]),输入是一个包含10个字符的数组);

在进一步处理代码时,我希望乘以(first digit *10)& (second digit *9)等等。

因此,在乘以它的同时取1的{​​{1}}的ASCII值,而不是(49 *10)

(1*10)

其中input[i]*counter;

counter

如何将char数组转换为整数数组,其中精确数字应该乘以而不是该字符的ascii值?

4 个答案:

答案 0 :(得分:3)

如果您提前知道您的值是ascii,那么只需从中减去'0'的值。例如。 '9' - '0' = 9'

答案 1 :(得分:1)

绝对使用atoi()。它为您提供了大量的手动字符检查。

int input_val = atoi(input);
int temp = input_val;

while(temp)
{
  int digit = temp % 10;
  temp /= 10;
}

这为您提供“数字”中从右到左的每个数字。您可以使用加法和乘以10的幂来构造您的数字。

答案 2 :(得分:0)

取ascii值并减去48。

那是input[i] - '0'

...或者更确切地说使用atoi()。如果转换失败则返回零,因此您不需要打扰'?'当你遍历它时,你的数组中有这样的字符。

答案 3 :(得分:0)

使用strtol将这些字符串转换为整数类型。

它优于atoi因为失败模式不明确。