从数组中获取数字并分配给一个int

我正在做我的作业,试图从arrays中获取两个字符,例如ABC10DEF

我想获得10并将其存储在int类型中。

  number_holder_1 = back[3] - '0'; number_holder_2 = back[4] - '0'; number = number_holder_1 * 10 + number_holder_2; 

这不起作用我不知道为什么。

当我打印出number_holder_1的值时,它显示1 ,当我显示number_holder_2它显示0但是当我打印number它只显示0

我不知道怎么做。

更新:

number_holder_1number_holder_2数字定义为int类型。

backABC10DEF从主要传递。

它似乎是一个实现错误,因为使用你给出的东西,一些更好的变量名称,它确实有效。

 #include  #include  int letter2int(char c) { int n; if (isdigit(c)) { n = c - '0'; } else { n = -1; /* error */ } /* for debugging */ printf("For character '%c' we get number '%d'.\n", c, n); return n; } int main(int argc, char** argv) { const char str[] = "ABC10DEF"; int tens, ones; int result; tens = letter2int(str[3]); ones = letter2int(str[4]); result = tens * 10 + ones; printf("Result: %d\n", result); return 0; } 

这可以推广到形成atoi函数(ASCII到整数)或者通过使用循环和char指针来提取字符串中出现的第一个数字(由任何非数字字符终止)。

使用i作为从零开始的索引, result += number * (int)pow(10, i);