Foro de elhacker.net

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:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.  
  5. char aux;
  6. FILE *f; //Se declara una variable de tipo fichero
  7.  
  8. f = fopen("Fichero.txt","r"); //Abre el fichero
  9. if(f == NULL){ //Comprueba si se ha abierto el fichero
  10. printf("No se ha podido abrir el fichero");
  11. exit(1);
  12. }
  13.  
  14. while(aux != EOF){ //Al terminar de leer un fichero genera un carcter especial llamado EOF (EndOfFile)
  15. aux = fgetc(f);
  16. printf("%c", aux); //Imprime en pantalla el fichero
  17. }
  18. printf("\n");
  19.  
  20. fclose(f); //Cierra el fichero
  21.  
  22. system("pause");
  23. }
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
Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.  
  5. char aux;
  6. char rtd[255]; //String de la ruta del archivo
  7. FILE *f; //Se declara una variable de tipo fichero
  8.  
  9. printf("Introduce la ruta del archivo (Sin contrabarra, solo admite /):\n");
  10. fgets(rtd,255,stdin);
  11.  
  12. f = fopen("%s","r",rtd); //Abre el fichero
  13. if(f == NULL){ //Comprueba si se ha abierto el fichero
  14. printf("No se ha podido abrir el fichero");
  15. exit(1);
  16. }
  17.  
  18. while(aux != EOF){ //Al terminar de leer un fichero genera un carcter especial llamado EOF (EndOfFile)
  19. aux = fgetc(f);
  20. printf("%c", aux); //Imprime en pantalla el fichero
  21. }
  22. printf("\n");
  23.  
  24. fclose(f); //Cierra el fichero
  25.  
  26. system("pause");
  27. }


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
Código
  1. 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

Código
  1. scanf("%254s",rtd);

esto para que solo capture 254 caracteres (evitar un overflow y que tenga su \0 al final)

y cambia fopen a

Código
  1. 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