我正在做我的作业并试图获取两个字符,这些字符是数组中的数字,例如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
,number_holder_1
和number_holder_2
定义为int
类型。
名为back
的数组持有ABC10DEF
正在从主要文件传递。
答案 0 :(得分:3)
这似乎是一个实现错误,因为使用你给出的东西,使用一些更好的变量名称,它确实有效。
#include <stdio.h>
#include <ctype.h>
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
指针提取字符串中出现的第一个数字(由任何非数字字符终止)索引字符串str
。
使用i
作为从零开始的索引result += number * (int)pow(10, i);
。