3
respostas

[Dúvida] Lendo palavras compostas no banco de dados

Como fazer para que o jogo leia frases dentro do banco de dados?

Inclui frases no banco de dados, mas, quando executo o jogo, ao escolher alguma destas, somente a primeira palavra da frase é considerada.

Trecho correspondente do código:

void choose() {
    
    FILE* f;
    f = fopen("words.txt", "r");
    
    if(f == 0) {

        printf("\nDEU RUIM\n\n");
        exit(1);
    }

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

    srand(time(0));
    
    int random = rand() % words;

    for(int i = 0; i <= random; i++) {

        fscanf(f, "%s", sword);
    }

    fclose(f);
}
3 respostas

Oi Helena! Tudo bem?

Fiz alguns testes aqui, e pelo padrão do jogo a gente acaba sempre chegando em um loop infinito... Uma solução seria mudar o fscanf pra reconhcer até o final da linha, fazendo:

fscanf(f, " %[^\n]", palavrasecreta);

Nesse caso, ele lê a string até achar um \n, que é o símbolo de quebra de linha. Porém, por mais que ele sorteie a palavra com espaços, se você digita um espaço no final da forca, ele não reconhece o espaço como uma letra, e não consegue chegar ao final do jogo :(

Uma solução seria colocar hifens (ou algum outro caractere especial) no lugar dos espaços. Dessa forma, seria possível ler a palavra toda até sem mudar o fscanf.

Espero ter ajudado! Abraços e bons estudos!

Olá!

Testei aqui, mas infelizmente ainda não consegui chegar no resultado esperado ;-;

Vou testar mais algumas coisas aqui e se alguma der certo volto aqui pra contar!

Muito obrigada!! o/

Complementando o comentário de cima com mais detalhes:

Quando coloco um caractere especial (usei o hífen) para separar as palavras compostas no banco de dados, o jogo consegue ler a palavra inteira, porém ele reconhece o hífen como uma letra a ser adivinhada.

Gostaria de saber se há alguma forma do jogo ignorar esse hífen na hora de ler a palavra.