C - Como hacer que habra archivos de texto y pregunte la ruta del archivo?

Iniciado por n1sen, 28 Julio 2017, 20:48 PM

0 Miembros y 1 Visitante están viendo este tema.

n1sen

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

engel lex

fopen si lee variables, muéstrame tu código que hayas intentado para poder corregir el error
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n1sen

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");
}
null

engel lex

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 problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

n1sen

El error que cometi era bastante estupido segun mi opinion, pero, como dije no me llevo muy bien con esas funciones xD
null