Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pandemia en 17 de Junio 2016, 20:58

Título: fscanf leer recuperar extraer datos de archivos txt en C. LenguajeC CU00538F
Publicado por: Pandemia en 17 de Junio 2016, 20:58
Hola aquí dejo una posible solución al ejercicio CU00538F del tutorial online de programación en lenguaje C desde cero.

Citar
EJERCICIO

Crea un archivo denominado almacen.txt que contendrá una palabra en cada línea (para un total de 6 líneas) como se muestra a continuación:

El
gaucho
es
equilibrio
y
belleza
 

 

Crea un programa que cree un array de palabras de modo que se lea el contenido del archivo y se almacene en los elementos del array. Por ejemplo palabra[0] contendrá "El", palabra[1] contendrá "gaucho" y así sucesivamente. Usando un bucle, muestra por pantalla la frase (intercalando los espacios necesarios). En este caso el resultado del programa será como este:

<<Tras extraer la información del archivo construimos esta frase: El gaucho es equilibrio y belleza>>

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>



int main()
{
   char textoExtraido[6][50];
   int i = 0;
    FILE* fichero;
    fichero = fopen("almacen.txt", "rt");
    printf("\n La frase extraida del archivo es: \n\t");
    for ( i = 0; i <= 5; i++)
    {
        fscanf(fichero, "%s" , &textoExtraido[i]);
        fprintf("%s", textoExtraido[i]);
    }
    fclose(fichero);
    printf("\n Proceso de lectura completado \n");
    return 0;

}


Saludos  :D
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: pedro,, en 17 de Junio 2016, 23:40
Hola Pandemia.

El código no funciona.

Utilizas:
Código: [Seleccionar]
fprintf("%s", textoExtraido[i]);
fprintf se usa para introducir datos en un archivo, no para mostrarlos por pantalla, en esa línea deberías usar printf, quedaría así:

Código: [Seleccionar]
printf("%s ", textoExtraido[i]);
Saludos. ;D
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: Pandemia en 19 de Junio 2016, 13:46
Tienes razón Pedro, es que primero estuve intentando hacer el archivo de escritura con las palabras del ejercicio y me hice un lío que no veas, y se me escapo esa f, pero ahora pongo el código rectificado, gracias por la corrección me sirve de mucha ayuda.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>



int main()
{
   char textoExtraido[6][50];
   int i = 0;
    FILE* fichero;
    fichero = fopen("almacen.txt", "rt");
    printf("\n La frase extraida del archivo es: \n\t");
    for ( i = 0; i <= 5; i++)
    {
        fscanf(fichero, "%s" , &textoExtraido[i]);
        printf("%s", textoExtraido[i]);
    }
    fclose(fichero);
    printf("\n Proceso de lectura completado \n");
    return 0;

}

 

Saludos.  :D
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: pedro,, en 19 de Junio 2016, 23:07
Bueno, te faltaría añadir un espacio entre cada palabra, para que no te salga todo junto.

Elgauchoesequilibrioybelleza

Por lo demás todo bien.

Saludos.
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: Pandemia en 21 de Junio 2016, 00:19
Bueno a ver si así resuelvo lo del espacio, poniendo un puts(""). Es que no se porque tengo problemas para leer el archivo, me aparecen signos raros, en lugar de las palabras.

Te dejo el código para que le eches un vistazo si es posible. Gracias

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>



int main()
{
   char textoExtraido[6][50];
   int i = 0;
    FILE* fichero;
    fichero = fopen("almacen.txt", "rt");
    printf("\nLa frase extraida del archivo es:\n\t");
    for ( i = 0; i <= 5; i++)
    {
        puts("");
        fscanf(fichero, "%s" , &textoExtraido[i]);
        printf("%s", textoExtraido[i]);
    }
    fclose(fichero);
    printf("\n\nProceso de lectura completado \n");
    return 0;

}

 

Saludos y gracias por tu tiempo...  :D
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: pedro,, en 21 de Junio 2016, 11:22
Buenas.

El ejercicio a mí me funciona bien, habría que ver el contenido que tienes en "almacen.txt" por si fuese eso lo que te está dando problemas.

Con puts(""); lo que haces es saltar de línea. También podrías añadir el espacio en esta línea, despues de "%s":
Código: [Seleccionar]
printf("%s ", textoExtraido[i]);
Saludos.
Título: Re:LenguajeC CU00538F leer recuperar extraer datos de archivos en C.
Publicado por: Pandemia en 21 de Junio 2016, 20:37
Ok, gracias por la corrección y de otra duda que me sacas, dejo el código nuevo.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>



int main()
{
   char textoExtraido[6][50];
   int i = 0;
    FILE* fichero;
    fichero = fopen("almacen.txt", "rt");
    printf("\nLa frase extraida del archivo es:\n\t");
    for ( i = 0; i <= 5; i++)
    {

        fscanf(fichero, "%s" , &textoExtraido[i]);
        printf("%s ", textoExtraido[i]);
    }
    fclose(fichero);
    printf("\n\nProceso de lectura completado \n");
    return 0;

}


Saludos y gracias por tu tiempo y paciencia.  :D