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>
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.