0

紛らわしい質問で申し訳ありませんが、私がやろうとしているのは、配列を変数に格納することです。

*value代わりにint value: -12118433669になるように数値を保存したいint value: 123456789

出力

123456789
array: '123456789' int value: -1218433669
0001234
array: '0001234' int value: -1218433669
5
array: 'abc5xyz' int value: -1218433669

array: '' int value: -1218433669
987654321
array: '987654321' int value: -1218433669

ソース

#include <stdio.h>

MyFNatoi(char *numArray, int *value) {

    int i;

    for (i = 0; i < 10; i++) {
        if (numArray[i] > 47 && numArray[i] < 58) {
            printf("%c", numArray[i] - 0);
        }
    }

}

int main() {

    char numbers[5][10] = { "123456789", "0001234", "abc5xyz", "", "987654321" };
    int i, value;

    for(i = 0; i < 5; i++) {
        MyFNatoi(numbers[i], &value);
        printf("\narray: '%s' int value: %d\n", numbers[i], value);
    }
    return 0;

}
4

3 に答える 3

0

私はこの機能を提案します:

void MyFNatoi(const char *str, int *value)
{
    if (value == NULL)
        return;

    *value = 0;

    if (str != NULL)
    {
        int negative = 0;

        if (*str == '-')
        {
            negative = 1;
            str++;
        }

        while (*str && isdigit(*str))
        {
            *value = (*value * 10) + (*str++ - '0');
        }

        if (negative)
            *value *= -1;
    }
}

負の数を処理し、先頭の数字のみをチェックします ("abc123def456"たとえば、数字を作成しません)。

于 2012-04-05T05:54:27.453 に答える
-1
#define Zero '0'
#define Nine '9'

void MyFNatoi(char *numArray, int *value) {

    int i;
    *value = 0;
    for (i = 0; i < 10 && numArray[i] != 0; i++) {
        if (numArray[i] >= Zero && numArray[i] <= Nine) {
            *value = *value * 10 + (numArray[i] - Zero);
        }
    }

}
于 2012-04-05T10:14:11.453 に答える
-1

私のバージョン:

void MyFNatoi(char *numArray, int *value)
{
    for (*value = 0; *numArray != '\0'; ++numArray) {
        if (0x30 <= *numArray && *numArray <= 0x39) {
            *value = 10* *value + *numArray - 0x30;
        }
    }
}
于 2012-04-05T00:55:28.423 に答える