Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao compilar

Pessoal, já tentei alterar a i e até a variável palavrasecreta mas nada continua dando erro ao compilar c:\Users\manoe\OneDrive\Área de Trabalho\Lógica_de_Programacao\cursos\Linguagem_C\forca.C\output\forca.exe: Permission denied collect2.exe: error: ld returned 1 exit status Alguém sabe como resolver isso ?


#include <stdio.h>
#include <string.h>



int main() {
 char palavrasecreta[20];
 sprintf(palavrasecreta,"MELANCIA\n");
 
 printf("%s",palavrasecreta);

 int acertou = 0;
 int enforcou = 0;
 
 do{
        
        char chute;
        printf("Qual letra ?\n");
        scanf("%c",&chute);
        

       for(unsigned int i = 0;i <  strlen(palavrasecreta);i++){
        if(palavrasecreta[i] == chute){
            printf("A posicao %d tem essa letra",i);
        }
       }

    }while(!acertou && !enforcou);

}
3 respostas

Olá, Manoel, Tudo bem?

O erro "Permission denied" que você está enfrentando ao compilar geralmente está relacionado ao arquivo forca.exe estar em uso ou não ter permissões de execução. Aqui está como resolver:

  1. Certifique-se de que o arquivo forca.exe não esteja em execução. Se estiver, feche-o e tente compilar novamente.

  2. Caso o problema persista, você pode tentar excluir o arquivo forca.exe manualmente e recompilar:

    rm c:\Users\manoe\OneDrive\Área\de\Trabalho\Lógica_de_Programacao\cursos\Linguagem_C\forca.C\output\forca.exe
    
  3. Além disso, para evitar problemas com o buffer do scanf, é uma boa prática usar scanf(" %c", &chute); (note o espaço antes de %c), que ajuda a limpar o buffer e evita erros na leitura.

Depois disso, recompilar deve funcionar sem problemas.

Qualquer dúvida, o fórum está à disposição para te ajudar!

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!
  • Boa noite , Renan ! Fiz o que você disse e o código está se comportando mais parecido com o do professor , porém , aparentando algum bug no printf talvez:
  •         A posicao 8 tem essa letra
    
  •         Qual letra ?
    
  •         m
    
  •            Qual letra ?
    
  •         A posicao 8 tem essa letra
    
  •         Qual letra ?
    
  •         M
    
  •         A posicao 0 tem essa letra
    
  •         Qual letra ?
    
  •         A posicao 8 tem essa letra
    
  •         Qual letra ?
    
  • Fora isso , ele aparenta esta funcionando como o indicado pelo professor . Muito obrigado novamente por sua ajuda Renan mas você poderia explicar porque isso ocorreu com o arquivo .exe por favor ? Eu gostaria de saber o motivo para entender melhor......
solução!

Olá, Manoel.

Que bom que o código está funcionando melhor agora!

Esse erro "Permission denied" que você encontrou geralmente acontece porque o arquivo .exe está em uso ou bloqueado pelo sistema, possivelmente devido ao programa ainda rodar em segundo plano ou problemas com permissões, especialmente em pastas sincronizadas como o OneDrive. Isso impede que o compilador sobrescreva o arquivo. Fechar o programa corretamente ou excluir manualmente o .exe costuma resolver.

Sobre o comportamento estranho com o printf, o que está acontecendo é que o código está comparando as letras de forma sensível a maiúsculas e minúsculas, então "m" e "M" são tratados como diferentes. Para corrigir isso, você pode fazer a comparação de forma que ignore essa diferença, convertendo as letras para maiúsculas ou minúsculas antes de compará-las.

Se precisar de mais ajuda, estou à disposição!