0

私は宿題に取り組んでおり、たとえば配列から数字である2文字を取得しようとしています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_1number_holder_2int

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;
}

charこれを一般化して、atoi 関数 (ASCII から整数へ) を形成するか、ループと文字列のインデックスへのポインターを使用して、文字列に出現する最初の数値 (数字以外の文字で終了) を抽出することができますstr

ゼロから始まるiインデックスとしてresult += number * (int)pow(10, i);.

于 2012-05-17T17:28:11.760 に答える