[ Foro para dudas y novedades ]

Directorio actual en C++

23-Jul-2006 08:13
Rainier Hernandez
3 Respuestas

Hola que tal, Soy un novato en C++, y como muchos novatos estoy un poco perdido en muchos temas. Quisiera hacerles una consulta ya que no he podido encontrar algo específico en este respecto:

Tengo un sencillo programa de consola que lee un fichero de texto. Por defecto el sistema busca el archivo en el directorio donde se encuentra el ejecutable, ahora bien, yo quiero mostrale al usuario la ruta en la cual se va a leer el fichero (Ejemplo: C:\Mi programa\file.txt) y que en caso de que el usuario no desee leerlo en esa dirección la pueda cambiar a otra específica.

No he encontrado una función o algo que me permita detectar cual es el directorio actual (Por defecto). Lo otro (El que el usuario pueda cambiar la ruta) tengo una idea de como pudiera hacerlo, pero aun estoy en eso.

Si me pueden ayudar con alguna idea o sugerencia, se los agradeceria de sobremanera.

Saludos

Rainier


23-Jul-2006 19:04
Nacho Cabanes (+84)

Buenas...

Me he tomado la libertad de pasar tu consulta a un nuevo tema de conversación.

Paso a contestarte:

- El cambiar la ruta no suele ser nada difícil. Normalmente basta con añadir la nueva ruta antes del nombre del fichero en las órdenes normales. Por ejemplo, en C o C++ podrías abrir un fichero de otra carpeta con

fopen("c:\datos\fichero.txt", "rt");

(recuerda que si estás bajo Windows o Dos, debes duplicar las barras, porque la barra invertida simple indica un carácter especial).


- El descubrir la ruta actual tiene más problema... pero no porque sea difícil, sino porque depende del compilador y del sistema operativo que emplees. En general, en muchos sistemas existe una función cuyo nombre es una abreviatura de "GetCurrentDirectory" (por ejemplo, getcurdir en Borland C++).

Algo que puede ayudar en un sistema concreto es echar un vistazo a los ficheros ".h" de la carpeta "include" de tu compilador. Las funciones como la que buscas pueden estar en ficheros llamados "dir.h" o similares ("io.h", "dos.h", windows.h" son otros de los que suelen contener peculiaridades del sistema). Los ficheros ".h" no son fáciles de leer, pero muchas veces ayudan a encontrar lo puedas necesitar o incluso te dan ideas de posibilidades que ni sabías que existieran.




24-Jul-2006 03:46
Rainier Hernandez

Ante todo gracias por tu respuesta,

El compilador que estoy usando es el Dev-C++ de Bloodshed, el comando que me pusiste funciona perfectamente para abrir un fichero en una ruta específica. Ahora bien, para saber el directorio actual encontré una sencilla función que lo imprime en la consola: system("cd"), esta me funciona de maravilla ya que mi intención era mostrarle al usuario el directorio actual de la aplicación (donde predeterminadamente el sistema  va a buscar el fichero), y luego darle la opción de que lo cambie si así lo quiere (esto lo pude hacer con chdir("ruta") en la librería <unistd.h>).

 De todas maneras voy a seguir buscando alguna función como la que me pones tipo "GetCurrentDirectory" por que creo que voy a necesitar obtener dicha ruta en un string, y eso si no lo pude hacer con system("cd") ya que devuelve un int que siempre es cero.

Bueno muchísimas gracias Nacho.

Saludos


24-Jul-2006 16:08
Nacho Cabanes (+84)

Si no recuerdo mal, en DevC++ tienes "getcwd" (get current working directory) en "io.h", que es llamado también desde "dir.h". Ahí tienes también "chdir".

Te hablo de memoria, no puedo probarlo ahora, q tengo muuucho correo pendiente...    O : - )






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)