Cómo poner un número entero a una matriz de dígitos

Quiero poner un número como 123456 en una matriz de dígitos. ¿Podría por favor darme una pista para el proceso? ¿Puedo definir una matriz con un número desconocido de elementos?

Primero calcule no de dígitos

 int count = 0; int n = number; while (n != 0) { n /= 10; cout++; } 

Ahora intialice la matriz y asigne el tamaño:

 if(count!=0){ int numberArray[count]; count = 0; n = number; while (n != 0){ numberArray[count] = n % 10; n /= 10; count++; } } 

Si no le importa usar char como el tipo de elemento de matriz, puede usar snprintf() :

 char digits[32]; snprintf(digits, sizeof(digits), "%d", number); 

Cada dígito se representará como los valores de carácter '0' través de '9' . Para obtener el valor entero, reste el valor del carácter por '0' .

 int digit_value = digits[x] - '0'; 

“¿Puedo definir una matriz con un número desconocido de elementos?”

Si el número es demasiado grande, puede ingresarlo como una cadena y luego extraer los dígitos correspondientes.

Algo como lo siguiente:

 char buf[128]; int *array; //fscanf(stdin,"%s",buf); array = malloc(strlen(buf) * sizeof(int)); //Allocate Memory int i=0; do{ array[i] = buf[i]-'0'; //get the number from ASCII subtract 48 }while(buf[++i]); // Loop till last but one 
 int x[6]; int n=123456; int i=0; while(n>0){ x[i]=n%10; n=n/10; i++; } 

Aquí están los pasos. Primero, obtenga el tamaño necesario para almacenar todos los dígitos en el número; haga un malloc de una matriz. Luego, toma el mod del número y luego divide el número entre 10. Sigue haciendo esto hasta que agotes todos los dígitos del número.