Criei um arquivo palavras.txt e funcionou porque sempre aparece palavras de tamanho diferentes mas quando eu tento colocar a primeira letra, o programa simplesmente fecha, alguem saberia me ajudar com essa ?
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
char palavrasecreta[20];
char chutes[26];
int tentativas = 0;
void baner(){
printf("****************\n");
printf(" Jogo de Forca *\n");
printf("****************\n\n");
}
void chuta(){
char chute;
scanf(" %c",&chute);
chutes[tentativas] = chute;
tentativas++;
}
int jachutou(char letra){
int achou = 0;
for(int j = 0;j < tentativas; j++){
if(chutes[j] == letra){
achou = 1;
break;
}
}
return achou;
}
void desenhaforca( ){
for(int i = 0; i < strlen(palavrasecreta); i++) {
int achou = jachutou(palavrasecreta[i]);
if (achou){
printf("%c ", palavrasecreta[i]);
}else{
printf("_ ");
}
}
printf("\n");
}
void escolhepalavra( ){
FILE* f;
f = fopen("palavras.txt","r");
if( f == 0){
printf("Banco de dados nao disponivel!\n\n");
exit(1);
}
int qpalavras;
fscanf(f, "%d", &qpalavras);
srand(time(0));
int rando = rand() % qpalavras;
for(int i = 0;i <= rando; i++){
fscanf(f,"%s",palavrasecreta);
}
fclose(f);
}
int acertou(){
for(int i = 0; i < strlen(palavrasecreta); i++){
if(!jachutou(palavrasecreta[i])){
return 0;
}
}
return 1;
}
int enforcou(){
int erros = 0;
for(int i; i < tentativas; i++){
int existe = 0;
for(int j = 0; j < strlen(palavrasecreta); j++){
if (chutes[i] == palavrasecreta[j]){
existe = 1;
break;
}
}
if(!existe) erros++;
}
return erros >= 6;
}
int main(void){
baner();
escolhepalavra();
acertou();
do{
desenhaforca( );
chuta();
}while (!acertou && !enforcou()); // "!" negacao (1)
}