1

我得到了一组字符作为输入scanf,实际上是这样的"1854?156X"

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

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

因此,在相乘时,它的 ASCII 值1实际上是(49 *10),而不是(1*10)

input[i]*counter;

counter在哪里

int counter=10;

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

4

4 回答 4

3

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

于 2012-08-17T14:51:15.297 回答
1

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

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

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

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

于 2012-08-17T17:05:42.797 回答
0

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

它优于,atoi因为故障模式不是模棱两可的。

于 2012-08-17T18:13:45.727 回答
0

取 ascii 值并减去 48。

那是input[i] - '0'

...或者更确切地说使用atoi()。如果转换失败,它会返回零,因此您无需担心“?” 以及遍历数组时的此类字符。

于 2012-08-17T14:59:11.760 回答