¿Cómo ingresar un número grande (un número que no se puede almacenar ni siquiera en un int largo) sin espacios? Necesitamos este gran número en una array de enteros de modo que cada elemento de la array almacene un solo dígito.
Input : 10000000000000000000000000000000000000000000000 We need to read it in an arr[] = {1, 0, 0...., 0}
En C scanf(), podemos especificar el número de dígitos para leer a la vez. Aquí necesitamos simplemente leer un dígito a la vez, así que usamos %1d.
// C program to read a large number digit by digit #include <stdio.h> int main() { // array to store digits int a[100000]; int i, number_of_digits; scanf("%d", &number_of_digits); for (i = 0; i < number_of_digits; i++) { // %1d reads a single digit scanf("%1d", &a[i]); } for (i = 0; i < number_of_digits; i++) printf("%d ", a[i]); return 0; }
Aporte :
27 123456789123456789123456789
Producción :
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
También podemos usar el estilo anterior para leer cualquier número de dígitos fijos. Por ejemplo, el siguiente código lee un gran número en grupos de 3 dígitos.
// C program to read a large number digit by digit #include <stdio.h> int main() { // array to store digits int a[100000]; int i, count; scanf("%d", &count); for (i = 0; i < count; i++) { // %1d reads a single digit scanf("%3d", &a[i]); } for (i = 0; i < count; i++) printf("%d ", a[i]); return 0; }
Aporte :
9 123456789123456789123456789
Producción :
123 456 789 123 456 789 123 456 789
Se puede usar el mismo concepto cuando leemos de un archivo usando fscanf()
Publicación traducida automáticamente
Artículo escrito por AnmolAgarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA