我想在C中把整数转换成数组这是我的代码,它可以工作

1mrurvl1  于 2023-02-07  发布在  其他
关注(0)|答案(1)|浏览(209)

我现在正在学习C语言,我遇到了这个问题,我想把整数转换成一个数组,我的代码可以工作,但问题是,我在一开始就声明了数组的大小,我想让它基本上对每个整数都有效。

#include<stdio.h>
int main()
{
    int x,i,temp;
    int arr1[6];
    scanf("%d",&x);
    for (i=5;i>=0;i--){
        temp=x%10;
        arr1[i]=temp;
        x/=10;
    }
    
    for (i=0;i<=5;i++){
        printf("%d",arr1[i]);
    }
    
    return 0;
}

你能帮帮我吗?
我正在努力寻找解决这个问题的办法。

2w2cym1i

2w2cym1i1#

对于初学者,您的代码没有考虑到用户可以输入负数。
如果不打算处理负值,则将变量x声明为无符号整数类型,例如unsigned int
至于你的问题,那么你可以使用一个可变长度的数组.
例如

#include <stdio.h>

int main( void )
{
    unsigned int x;

    if ( scanf( "%u", &x ) == 1 )
    {
        size_t n = 0;
        unsigned int tmp = x;

        do 
        {
            ++n;
        } while ( tmp /= 10 );

        unsigned int a[n];

        for ( size_t i = n; i != 0; x /= 10 )
        {
            a[--i] = x % 10; 
        }

        for ( size_t i = 0; i < n; i++ )
        {
            printf( "%u ", a[i] );
        }
        putchar( '\n' );
    }
}

如果您的编译器不支持可变长度数组,则可以使用标头<stdlib.h>中声明的标准函数malloc动态分配数组,例如

unsigned int *a = malloc( n * sizeof( *a ) );

相关问题