fopen em C [RESOLVIDO]

1. fopen em C [RESOLVIDO]

Bell Coutinho
BellCoutinho

(usa Arch Linux)

Enviado em 16/11/2018 - 15:40h

Pessoal, no meu programinha meu arquivo password.txt está dentro da pasta file. Para ele funcionar eu tenho que passar o caminho completo:

FILE *fp = fopen("/home/thebell/Studies/Computer-Science/SEGUNDO-SEMESTRE/Laboratório de Programação/file/password.txt", "rb");


só que eu tenho que mandar para meu professor, que vai ter um caminho diferente. Tem alguma forma de pegar o caminho, tipo:

FILE *fp = fopen("pwd/file/password.txt", "rb");


ou voltar um diretório, porque meu arquivo.c que está chamando a função fopen está dentro de src/, ai ele teria que volta um diretório e entra em file/, tipo:
cd ../file/.

FILE *fp = fopen("../file/password.txt", "rb");


Teria como fazer algo do tipo?

Desde já obrigado.



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/11/2018 - 16:35h

Sim.

Usar o caminho relativo seguramente funciona, desde que o arquivo esteja no lugar que você especificar.

Para descobrir o diretório corrente, e com isso usar um caminho absoluto, você pode tentar usar a função getcwd() (com a ressalva de que alguns sistemas — em particular o AIX — têm implementações de getcwd() extremamente ineficientes).

Considere, porém, duas possibilidades que você não comentou: salvar o arquivo num local padrão (por exemplo: /etc, /etc/nome_da_aplicacao, /opt/nome_da_aplicação/etc, /usr/local/etc etc.), como a maioria das aplicações que a gente usa no dia-a-dia, ou permitir que o usuário especifique o caminho do arquivo de senhas através de uma opção passada ao programa no momento da execução.

3. Re: fopen em C [RESOLVIDO]

Bell Coutinho
BellCoutinho

(usa Arch Linux)

Enviado em 16/11/2018 - 17:02h

paulo1205 escreveu:

Sim.

Usar o caminho relativo seguramente funciona, desde que o arquivo esteja no lugar que você especificar.

Para descobrir o diretório corrente, e com isso usar um caminho absoluto, você pode tentar usar a função getcwd() (com a ressalva de que alguns sistemas — em particular o AIX — têm implementações de getcwd() extremamente ineficientes).

Considere, porém, duas possibilidades que você não comentou: salvar o arquivo num local padrão (por exemplo: /etc, /etc/nome_da_aplicacao, /opt/nome_da_aplicação/etc, /usr/local/etc etc.), como a maioria das aplicações que a gente usa no dia-a-dia, ou permitir que o usuário especifique o caminho do arquivo de senhas através de uma opção passada ao programa no momento da execução.


Não tinha pensado na pasta opt/. Quando ele digitar make install vou mover a pasta file/ e o executável para lá. Obrigado ^^






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts