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

时间:2012-05-17 17:11:55

标签: c logic

我正在做我的作业并试图获取两个字符,这些字符是数组中的数字,例如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

我不知道怎么做。

更新:

numbernumber_holder_1number_holder_2定义为int类型。

名为back的数组持有ABC10DEF正在从主要文件传递。

1 个答案:

答案 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);