Boa noite, amigos. Venho tendo problema com o seguinte código:
#include <stdio.h>
#include <string.h>
void cabecalho () {
printf("\n\n");
printf("***************************\n");
printf("*** Jogo da Forca ***\n");
printf("*** @MopDev ***\n");
printf("***************************\n\n");
}
void chuta (char chutes [26], int* tentativas) {
char chute;
scanf(" %c", &chute);
chutes[(*tentativas)] = chute;
(*tentativas)++;
}
int confere (char letra, char chutes[26], int tentativas) {
int encontrou = 0;
for(int j=0; j < tentativas; j++) {
if(chutes[j] == letra) {
encontrou = 1;
break;
}
}
return encontrou;
}
int main () {
char palavraS [7];
sprintf(palavraS, "CADEIRA");
int acertou = 0;
int enforca = 0;
char chutes [26];
int tentativas = 0;
cabecalho();
do {
printf("\n\n");
for(int i=0; i < strlen(palavraS); i++) {
int encontrou = confere(palavraS[i], chutes, tentativas);
if (encontrou == 1){
printf("%c ", palavraS[i]);
} else {
printf("_ ");
}
}
printf("\n\nDigite a letra que voce acha que esta na palavra secreta: ");
chuta(chutes, &tentativas);
} while (!acertou && !enforca);
}
Quando o executo e chuto a letra " A ", ele me imprime um underscore a mais do que deveria.
Dessa forma:
Digite a letra que voce acha que esta na palavra secreta: C
C
Digite a letra que voce acha que esta na palavra secreta: A
C A A _
Digite a letra que voce acha que esta na palavra secreta:
Procurei, procurei, e não encontrei algo que estivesse levando o código a ler mais de uma vez o if inserido no do. Alguém pode me ajudar?
Obs.: Estou usando gcc forca.c -std=c99 -o forca.exe na hora de compilar meu código, pois se compilo direto, aparecem diversos erros de escrita no código.
Obs.2: Só informei isso da Obs.1 pois talvez possa ajudar vocês.
Obrigado pela atenção, estarei no aguardo!