0

我正在做作业并尝试从数组中获取两个数字字符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是从主传递的。

4

1 回答 1

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);.

于 2012-05-17T17:28:11.760 回答