将非分离字符的数字读入C中的int数组

时间:2016-08-31 06:27:15

标签: c arrays io

我正在尝试将非分离的字符输入中的数字读入int数组。样本输入和输出:

Input: 12a34b56 C7d8E9
Output: [1,2,3,4,5,6,7,8,9]

这是我的尝试:

int check_digit (char c) {
    if ((c>='0') && (c<='9')) return 1;
    return 0;
}

int main(int argc, char const *argv[]) {
    int numArray[1000], tempChar, c = 0;

    tempChar = getchar();

    while ( tempChar != EOF ) {
        if ( check_digit(tempChar) ) {
            numArray[c] = tempChar - '0';
            c += 1;
        }
        tempChar = getchar();
    }

    printf("[");
    for ( int i = 0; i < c-2; i++ ) {
        printf("%d,", numArray[c]);
    }
    printf("%d]\n", numArray[c-1]);

    return 0;
}

这不能正常工作。它在读完一个角色后停止。

示例输入和输出:

Input: 1a3b5c7d9

Output: [0,0,0,9]

Desired output: [1,3,5,7,9]

1 个答案:

答案 0 :(得分:2)

您的代码中有拼写错误

printf("%d,", numArray[c]);

必须

printf("%d,", numArray[i]);

印刷循环可以简单地

printf("[");
for ( int i = 0; i < c; i++ )
{
    printf("%d%c", numArray[i], (i<c-1)? ',' : ']');
}
printf("\n");

请注意,您的代码仅管理一位数值。例如。 45的管理方式为45