Ingrese una array entera sin espacios en C

¿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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *