Estoy haciendo un programa en C donde necesito obtener el directorio desde el que se inicia el programa. Este programa está escrito para computadoras UNIX. He estado mirando opendir()
y telldir()
, pero telldir()
devuelve un off_t (long int)
, así que realmente no me ayuda.
¿Cómo puedo obtener la ruta actual en una cadena (matriz de caracteres)?
c
unix
working-directory
CharlesB
fuente
fuente
int main()
debería serint main(void)
.char cwd[PATH_MAX+1]
. O si no puede molestarse con los tampones solochar *buf=getcwd(NULL,0);
y cuando haya terminadofree(buf)
(a partir de POSIX.1-2001)Busque la página del manual para
getcwd
.fuente
man 3 getcwd
. Bromas aparte, no seas anarquista, esta publicación es del '08, las convenciones SO eran diferentes.Aunque la pregunta está etiquetada como Unix, las personas también pueden visitarla cuando su plataforma de destino es Windows, y la respuesta para Windows es la
GetCurrentDirectory()
función:Estas respuestas se aplican a los códigos C y C ++.
Enlace sugerido por el usuario 4581301 en un comentario a otra pregunta, y verificado como la mejor opción actual con un sitio de búsqueda de Google: microsoft.com getcurrentdirectory.
fuente
fuente
Tenga en cuenta que
getcwd(3)
también está disponible en la libc de Microsoft: getcwd (3) , y funciona de la misma manera que esperaría.Debe vincularse con
-loldnames
(oldnames.lib, que se realiza automáticamente en la mayoría de los casos), o usar_getcwd()
. La versión no prefijada no está disponible en Windows RT.fuente
Para obtener el directorio actual (donde ejecuta su programa de destino), puede usar el siguiente código de ejemplo, que funciona tanto para Visual Studio como para Linux / MacOS (gcc / clang), tanto C como C ++:
fuente