从数组中获取数字并分配给一个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_1
和number_holder_2
数字定义为int
类型。
back
是ABC10DEF
从主要传递。
它似乎是一个实现错误,因为使用你给出的东西,一些更好的变量名称,它确实有效。
#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);
。