问题描述
我的工作我的功课,并试图获得两个字符,这是由例如数组 ABC10DEF
I'm working on my homework and trying to get two characters which are numbers from an array for example ABC10DEF
我想获得 10
,并将其存储在一个 INT
键入
I want to get 10
and store it in an int
type.
number_holder_1 = back[3] - '0';
number_holder_2 = back[4] - '0';
number = number_holder_1 * 10 + number_holder_2;
这不工作,我不知道为什么。
This doesn't work I don't know why.
当我打印出来 number_holder_1
的值,它显示 1
,当我显示 number_holder_2
显示它 0
但是当我打印数量
它只是显示 0
When I print out the value of number_holder_1
it does display 1
and when I display number_holder_2
it display 0
but when I print number
it just display 0
我不知道怎么办。
更新:
的数量
, number_holder_1
和 number_holder_2
的定义为 INT
键入
称为数组回
,持有 ABC10DEF
从主传递。
the array called back
that holding ABC10DEF
is passing from the main.
推荐答案
这似乎是一个执行错误,因为用你给的东西,有一些更好的变量名,它的工作。
It appears to be an implementation mistake, because using what you have given, with some better variable names, it does work.
#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为整数)或使用循环和字符提取发生在一个字符串(任何非数字字符终止)的第一个数字
在字符串指针指数 STR
。
This can be generalized to either form a atoi function (ASCII to integer) or extract the first number that occurs in a string (terminated by any non-digit character) by using a loop and a char
pointer to index over the string str
.
使用 I
作为从零开始的索引,结果+ =数量*(INT)POW(10,I);
。
Using i
as the zero-based index, result += number * (int)pow(10, i);
.
这篇关于得到数量从一个数组,并分配到一个INT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!