Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: n1sen en 28 Julio 2017, 20:48 PM

Título: C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?
Publicado por: n1sen en 28 Julio 2017, 20:48 PM
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.
Título: Re: C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?
Publicado por: engel lex en 28 Julio 2017, 20:50 PM
fopen si lee variables, muéstrame tu código que hayas intentado para poder corregir el error
Título: Re: C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?
Publicado por: n1sen en 28 Julio 2017, 20:54 PM
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");
}
Título: Re: C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?
Publicado por: engel lex en 28 Julio 2017, 21:10 PM
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
Título: Re: C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?
Publicado por: n1sen en 28 Julio 2017, 21:20 PM
El error que cometi era bastante estupido segun mi opinion, pero, como dije no me llevo muy bien con esas funciones xD