• Viernes 8 de Noviembre de 2024, 23:17

Autor Tema:  Fopen Como Saber Ruta Relativa?  (Leído 3167 veces)

wakeup

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://www.hhdirecto.net
Fopen Como Saber Ruta Relativa?
« en: Miércoles 5 de Abril de 2006, 10:55 »
0
Estoy haciendo una dll en C++, quiero hacer desde la dll una lectura de un fichero de texto. Pero no quiero pasarle la ruta absoluta del archivo sino relativa (que esté en la misma carpeta de la dll, o la misma carpeta del programa que ejecuta la dll, no me importa demasiado ahora).

El caso es que hago:
fichero = fopen("fichero.txt", "r");
Pero fichero siempre es NULL y eso que tengo el fichero.txt copiado en varios sitios. Como puedo saber la carpeta exacta donde tengo que poner el fichero .txt para que funcione la instruccion?

Con la ruta absoluta me funciona c:\...., estoy en WXP

Gracias


__________________________
HipHop
Chiste

Reyhert

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Fopen Como Saber Ruta Relativa?
« Respuesta #1 en: Lunes 10 de Abril de 2006, 07:23 »
0
Hola wakeup, yo no se mucho del tema, pero me parece que no podes ejecutar una dll como si fuera un exe, tengo entendido que la dll te sirve de sierta forma para almacenar metodos, clases, etc... pero que son llamadas desde tu programa. (corrijanme si estoy equivocado!!!).

Se me ocurre, que podrias almacenar las direcciones de los archivos al momento de ser creados, para despues llamarlo.

Ej:
Código: Text
  1.  
  2. #define DIR_ARCHIVO_A c:\archivo de programas\mi programa\archivo.txt
  3. ...
  4. fichero = fopen(DIR_ARCHIVO_A, "r");
  5. ...
  6.  
  7.  

Saludos
Reyhert

Joako

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Fopen Como Saber Ruta Relativa?
« Respuesta #2 en: Jueves 13 de Abril de 2006, 04:28 »
0
Puedes probar de usar la función _getcwd que te devuelve un string con el directorio que se usa en ese momento... así puedes saber en que directorio está trabajando tu rutina... :kicking:

#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

void main( void )
{
   char buffer[256];

   if( _getcwd( buffer, _MAX_PATH ) == NULL )
      perror( "_getcwd error" );
   else
      printf( "%s\n", buffer );
}


Y para cambiar el directorio de trabajo puedes usar _chdir, _wchdir

_chdir("c:\\codigo"); :alien:

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Fopen Como Saber Ruta Relativa?
« Respuesta #3 en: Jueves 13 de Abril de 2006, 19:57 »
0
Hola,

La ruta relativa al abrir un archivo es relativa al directorio de trabajo de la aplicación (que ya han posteado cómo obtener), no al directorio en el que se encuentra el binario que se está ejecutando. Lo que has de hacer es obtener el directorio en el que se encuentra el binario y concatenarlo con tu ruta relativa para no tener problemas derivados de tu directorio de trabajo en el momento de la ejecución.

Un saludo,

Ruben3d