es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo leer datos desde un archivo con fscanf en lenguaje c

Quiero importar números (40000 en total, separados por espacios) (formato: 2.000000000000000000e+02) con “fscanf” y colocarlos en un arreglo 1D. Intenté muchas cosas, pero los números que estoy obteniendo son extraños.

Lo que tengo hasta ahora:

int main() {
    FILE* pixel = fopen("/Users/xy/sample.txt", "r");
    float arr[40000];
    fscanf(pixel,"%f", arr);

    for(int i = 0; i<40000; i++)
        printf("%f", arr[i]);
}

Espero que alguien pueda ayudarme, soy un principiante 😉
¡Muchas gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para importar los 40000 números separados por espacios de un archivo de texto usando fscanf y almacenarlos en un arreglo unidimensional en C, es necesario usar un bucle para leer cada número por separado desde el archivo y almacenarlo en el arreglo.

    Aquí está un código de ejemplo que debería funcionar:

    #define SIZE 40000
    
    int main() {
            FILE* pixel = fopen("/Users/xy/sample.txt", "r");
            float arr[SIZE];
            int i = 0;
    
            while (fscanf(pixel, "%f", &arr[i]) == 1) {
                i++;
                if (i == SIZE) break;
            }
    
            for (int j = 0; j < i; j++) {
                printf("%f ", arr[j]);
            }
    
            return 0;
    }
    

    En este código, definimos una constante SIZE para el tamaño del arreglo, abrimos el archivo usando fopen y creamos un contador i para mantener un seguimiento del índice actual en el arreglo. Usamos un bucle para leer cada número del archivo usando fscanf y almacenarlo en el arreglo usando el operador de dirección (&), que pasa un puntero al elemento correspondiente del arreglo.

    El bucle verifica si fscanf devuelve un valor de 1, lo que indica que ha leído exitosamente un número. Si el bucle llega al final del archivo o al límite del tamaño del arreglo, se detiene. Finalmente, usamos otro bucle para imprimir los elementos del arreglo en la consola.

    ¡Espero que esto ayude! Háganme saber si tienen alguna pregunta.

Comments are closed.