1
resposta

Meu banco de dados de palavras sempre da como indisponível

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include "jogodaforca.h"

char palavrasecreta[20]; char chutes[26]; int chutesdados = 0;

int enforcou() {

int erros = 0;

for(int i = 0; i < chutesdados; 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 >= 5;

}

int ganhou() { for(int i = 0; i < strlen(palavrasecreta); i++) { if(!jachutou(palavrasecreta[i])) { return 0; } }

return 1;

}

void abertura() { printf("/****/\n"); printf("/ Jogo de Forca /\n"); printf("/***/\n\n"); }

void chuta() { char chute; printf("Qual letra? "); scanf(" %c", &chute);

chutes[chutesdados] = chute;
chutesdados++;

}

int jachutou(char letra) { int achou = 0; for(int j = 0; j < chutesdados; j++) { if(chutes[j] == letra) { achou = 1; break; } }

return achou;

}

void desenhaforca() {

printf("Você já deu %d chutes\n", chutesdados);

for(int i = 0; i < strlen(palavrasecreta); i++) {

    if(jachutou(palavrasecreta[i])) {
        printf("%c ", palavrasecreta[i]);
    } else {
        printf("_ ");
    }

}
printf("\n");

}

void adicionapalavra() { char quer;

printf("Você deseja adicionar uma nova palavra no jogo (S/N)?");
scanf(" %c", &quer);

if(quer == 'S') {
    char novapalavra[20];

    printf("Digite a nova palavra, em letras maiúsculas: ");
    scanf("%s", novapalavra);

    FILE* f;

    f = fopen("palavras.txt", "r+");
    if(f == 0) {
        printf("Banco de dados de palavras não disponível\n\n");
        exit(1);
    }

    int qtd;
    fscanf(f, "%d", &qtd);
    qtd++;
    fseek(f, 0, SEEK_SET);
    fprintf(f, "%d", qtd);

    fseek(f, 0, SEEK_END);
    fprintf(f, "\n%s", novapalavra);

    fclose(f);

}

}

void escolhepalavra() { FILE* f;

f = fopen("palavras.txt", "r");
if(f == 0) {
    printf("Banco de dados de palavras não disponível\n\n");
    exit(1);
}

int qtddepalavras;
fscanf(f, "%d", &qtddepalavras);

srand(time(0));
int randomico = rand() % qtddepalavras;

for(int i = 0; i <= randomico; i++) {
    fscanf(f, "%s", palavrasecreta);
}

fclose(f);

}

int main() {

abertura();
escolhepalavra();

do {

    desenhaforca();
    chuta();

} while (!ganhou() && !enforcou());

}

1 resposta

Olá! Tudo bem?

Desculpe pela demora em obter retorno.

Confere por favor se você tem o arquivo com nome exatamente igual a palavras.txt e se esse arquivo está na mesma pasta que o seu programa. Talvez seu programa não esteja reconhecendo o banco de palavras porque não encontra o arquivo correto.

Espero ter ajudado! Abraços e bons estudos!

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