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 imprimir en la terminal desde un archivo de texto

Así que estoy aprendiendo procesamiento de archivos para mi tarea y me pregunto por qué este código funciona:

#include<stdio.h>

int main(){
    char test[255];
    FILE *open;
    open = fopen("data.txt", "r");
    while(fscanf(open, "%s", test)!=EOF){
        printf("%s", test);
    }
}

Mientras que el siguiente no funcionó, cualquier respuesta sería apreciada:

“`c
#include<stdio.h>

int main(){
char test[255];
FILE *open;
open = fopen("data.txt", "r");
fscanf(open, "%s", test);
printf("%s", *test);
}
“`</stdio.h></stdio.h>

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la cual el primer código funciona mientras que el segundo no, se debe a la forma en que se llama a la función printf. En el primer código, printf se llama con el argumento “%s”, el cual espera una cadena de caracteres terminada en nulo como su argumento correspondiente. El array de prueba es un array de caracteres, por lo que puede ser tratado como una cadena y pasado a printf.

    Sin embargo, en el segundo código, printf se llama con el argumento “%s” y *test como su argumento correspondiente. El *test desreferencia el primer elemento del array de prueba, el cual es un char, no una cadena. Pasar un solo carácter a la función printf con el especificador de formato “%s” causa un comportamiento indefinido porque printf esperará una cadena pero solo recibirá un solo carácter.

    Para corregir el segundo código, printf debería ser llamado solo con “test” como argumento, sin desreferenciarlo. Esto pasará todo el array de prueba como una cadena a printf, lo cual imprimirá correctamente su contenido.

Comments are closed.