Hola, he estado practicando un poco de C, y empeze programando un programa que lee archivos de texto, aca esta el codigo, bastante simple la verdad:
#include <stdio.h>
int main(void){
char aux;
FILE *f; //Se declara una variable de tipo fichero
f = fopen("Fichero.txt","r"); //Abre el fichero
if(f == NULL){ //Comprueba si se ha abierto el fichero
printf("No se ha podido abrir el fichero");
exit(1);
}
while(aux != EOF){ //Al terminar de leer un fichero genera un carcter especial llamado EOF (EndOfFile)
aux = fgetc(f);
printf("%c", aux); //Imprime en pantalla el fichero
}
printf("\n");
fclose(f); //Cierra el fichero
system("pause");
}
Sin embargo, en la funcion fopen yo quiero que pregunte la ruta del archivo, ya lo he intentado, lo he intentado con strings pero no funciona ya que al parecer fopen no lee variables, hay una alternativa a esa funcion?
Gracias.
fopen si lee variables, muéstrame tu código que hayas intentado para poder corregir el error
Puede que el fallo sea medio tonto, pero es que simpre me complico lo de abrir archivos
#include <stdio.h>
int main(void){
char aux;
char rtd[255]; //String de la ruta del archivo
FILE *f; //Se declara una variable de tipo fichero
printf("Introduce la ruta del archivo (Sin contrabarra, solo admite /):\n");
fgets(rtd,255,stdin);
f = fopen("%s","r",rtd); //Abre el fichero
if(f == NULL){ //Comprueba si se ha abierto el fichero
printf("No se ha podido abrir el fichero");
exit(1);
}
while(aux != EOF){ //Al terminar de leer un fichero genera un carcter especial llamado EOF (EndOfFile)
aux = fgetc(f);
printf("%c", aux); //Imprime en pantalla el fichero
}
printf("\n");
fclose(f); //Cierra el fichero
system("pause");
}
fopen("%s","r",rtd)
??? XD fopen no es fgets XD
por otro lado, fgets si no me equivoco captura el salto de linea por lo que el archivo nunca será correcto si no tiene un \n al final
usa en lugar de fgets
scanf("%254s",rtd);
esto para que solo capture 254 caracteres (evitar un overflow y que tenga su \0 al final)
y cambia fopen a
fopen(rtd,"r")
otros detalles
-no uses exit, usa return
-main debe siempre terminar en return 0 para indicar que todo fue bien
El error que cometi era bastante estupido segun mi opinion, pero, como dije no me llevo muy bien con esas funciones xD