Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

O arquivo compilado utiliza os arquivos txt?

Não estou tendo problema, estou apenas com uma dúvida a respeito do arquivo c compilado do gcc.

Quando eu movo os arquivos da aula para outro diretório, ele cai naquele "erro" definido na condição "if ( f == 0) { exit(1); }", como se o arquivo txt estivesse indisponível. Isso quer dizer que o compilador quando lê a função 'fopen();' ele define o caminho do arquivo pela raiz do sistema? Porque mesmo ele estando no mesmo diretório do arquivo txt(porém em um diretório diferente no qual ele foi compilado) ele mostra esse "erro".

O compilador gcc não compila o arquivo txt junto ao resto dos arquivos .c pro arquivo executável? se sim, acredito que isso não ocorre com os header files por conta do '#include', teria então como eu incluir o arquivo txt para evitar esse erro ao mudar de diretório?

3 respostas

Não, o GCC não compila os txt.

Eu diria que é melhor fazer o que eu faço, que é baixar os arquivos da aula e ver se eles funciona, depois se funcionar tenta comparar cada pedaço dos seus arquivos com os s correspondentes ao da aula para caçar o erro. Se os arquivos da aula não funcionar o erro está em algum lugar no pc, exemplo no compilador.

Oi Ronaldo,

Como eu disse, não estou tendo problemas, não há erros no meu código. A única coisa que eu acho chata, e que talvez possa ser um problema dependendo do contexto, é que eu preciso recompilar os arquivos em C sempre que eu for mudar eles de diretório. Eu dei uma pesquisada, e vi que o C++ pode incluir os arquivos txt segundo uma pessoa que afirmou isso em um fórum, mas ainda não testei para ver se realmente é verdade, porque ainda to pra acabar o curso em C++.

Eu disse ali encima que parece que o compilador na hora de compilar pro arquivo executável define o caminho do arquivo pelo 'fopen' com base na raiz do sistema, porque se fosse definido pelo diretório atual do arquivo(./), filtrando o local do arquivo executável, não ocorreria isso. Se realmente isso for na leitura do arquivo com base na raiz do sistema... Teria então um código em C que pudesse fazer o executável sempre filtrar o diretório atual dele, independente de onde eu colocá-lo, para que possa de qualquer forma encontrar o arquivo txt dentro do mesmo diretório?

Eu não sei se isso ocorre com outros compiladores de outros sistemas, ou versões, porque eu sei que o mingw vem com uns header files diferentes pelo sistema, como o <windows.h> (eu uso o debian)

solução

Bom... vi onde está o problema kk, na verdade não é nada disso, o console utilizado por mim não estava executando o arquivo adequadamente, pois o "present working directory", estava em outro disco rígido, quando eu dou cd até a pasta onde está o arquivo, ele executa independente do diretório onde foi compilado. Ainda tenho dúvida do motivo de ter que ir até a pasta do arquivo pelo terminal para que não caia nesse erro, não sei bem porque tenho que mover o 'pwd' para a mesma pasta. Talvez o 'fopen' procura os arquivos no 'pwd' onde o terminal está executando o programa, mesmo o executável estando "salvo" em outro local.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software