Boa noite. Não consegui entender como a variável tentativas funciona nesse código, tentei fazer um teste de mesa mas não entendi a aplicação dela no programa.
#include <stdio.h>
#include <string.h>
int main() {
//int notas[10]; //ARRAY DE 10 POSICOES, VARIA DE 0 A 9
char palavrasecreta[20];
sprintf(palavrasecreta, "MELANCIA"); //SPRINTF: ADD UM \0 COMO ÚLTIMO CARACTERE PARA INDICAR QUE ACABOU A STRING, NOS PERMITE ESCREVER STRINGS DENTRO DE ARRAYS DE CHAR
int acertou = 0;
int enforcou = 0;
char chutes[26];
int tentativas = 0;
do {
for(int i = 0; i < (int)strlen(palavrasecreta); i++) {
int achou = 0;
for(int j = 0; j < tentativas; j++) {
if(chutes[j] == palavrasecreta[i]) {
achou = 1;
break;
}
}
if(achou) {
printf("%c ", palavrasecreta[i]);
} else {
printf("_ ");
}
}
printf("\n");
char chute;
scanf(" %c", &chute); //dar um espaco antes de %c faz o scanf ignorar o enter
chutes[tentativas] = chute;
tentativas++;
} while(!acertou && !enforcou); //! representa nao (operador negacao)
return 0;
}
Principalmente, nessa parte:
chutes[tentativas] = chute;
tentativas++;
Em chutes[tentativas] = chute, tentativas está igual a 0, pois ela foi inicializada assim. Então ela faz com que o segundo FOR não aconteça, pois j/(0) não é menor que tentativas/(0) . Ao fazer tentativas++, o segundo for é executado, mas qual será o valor do j e de tentativas agora?