Estou criando um programa em C onde preciso obter o diretório em que o programa é iniciado. Este programa foi escrito para computadores UNIX. Eu estive olhando opendir()
e telldir()
, mas telldir()
retorna um off_t (long int)
, então isso realmente não me ajuda.
Como posso obter o caminho atual em uma string (matriz de caracteres)?
c
unix
working-directory
CharlesB
fonte
fonte
int main()
deveria serint main(void)
.char cwd[PATH_MAX+1]
. Ou se você não posso ser incomodado com buffers apenaschar *buf=getcwd(NULL,0);
e quando você está feitofree(buf)
(a partir de POSIX.1-2001)Procure a página de manual
getcwd
.fonte
man 3 getcwd
. Brincadeiras à parte, não seja anarconista, este post é de 08, então as convenções eram diferentes.Embora a pergunta esteja marcada como Unix, as pessoas também a visitam quando a plataforma de destino é o Windows, e a resposta para o Windows é a
GetCurrentDirectory()
função:Essas respostas se aplicam aos códigos C e C ++.
Link sugerido pelo usuário4581301 em um comentário para outra pergunta e verificado como a principal opção atual com uma pesquisa no Google 'site: microsoft.com getcurrentdirectory'.
fonte
fonte
Observe que
getcwd(3)
também está disponível na libc: getcwd (3) da Microsoft e funciona da mesma maneira que você esperaria.É necessário vincular com
-loldnames
(oldnames.lib, que é feito automaticamente na maioria dos casos) ou usar_getcwd()
. A versão não corrigida não está disponível no Windows RT.fonte
Para obter o diretório atual (onde você executa seu programa de destino), você pode usar o seguinte código de exemplo, que funciona tanto para o Visual Studio quanto para o Linux / MacOS (gcc / clang), C e C ++:
fonte