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.

Reemplazo de carácter de impresión fscanf.

#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {

//abriendo collection.txt usando ptr
FILE *ptr;

char data[1000];
ptr = fopen(&quot;collection.txt&quot;, &quot;r&quot;);

printf(&quot;Hola mundo \n&quot;);

fscanf(ptr, &quot;%s&quot;, data);
printf(&quot;%s \n&quot;, data);

fclose(ptr);

return 0;       

}

collection.txt:

hi mi nombre es

Cuando ejecuto este programa obtengo:
ninguno
Hola mundo
P7k

P7k es una dirección de memoria, supongo.

He mirado varios sitios web y artículos y no he podido averiguar qué puedo hacer para imprimir el texto en collection.txt.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que solo está leyendo la primera palabra del archivo collection.txt utilizando la función fscanf. Para leer todo el texto del archivo, podemos utilizar en su lugar la función fgets, que lee una línea de texto desde un puntero de archivo.

    Podemos modificar el código de la siguiente manera:

    #include <assert.h>
    #include <ctype.h>
    #include <math.h>
    #include <stdbool.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(int argc, char *argv[]) {
    
        //abriendo collection.txt utilizando ptr 
        FILE *ptr;
    
        char data[1000];
        ptr = fopen("collection.txt", "r");
    
        printf("Hola mundo \n");
    
        fgets(data, 1000, ptr);
        printf("%s", data);
    
        fclose(ptr);
    
        return 0;       
    }
    

    Con esta modificación, el programa debería imprimir todo el texto del archivo collection.txt:

    none
    Hola mundo
    hola mi nombre es
    </string.h></stdlib.h></stdio.h></stdbool.h></math.h></ctype.h></assert.h>

Comments are closed.