1
resposta

Já revisei varias vezes mas não entendo o problema do código

#include <stdio.h>
#include <string.h>
#include "forca.h"
#include <time.h>
#include <stdlib.h>

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

    void abertura(){
        printf("***********************\n");
        printf("*    Jogo de Forca    *\n");
        printf("***********************\n\n");
    }
    void chuta(){
        char chute;
        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(){
        for(int i = 0; i < strlen(palavrasecreta); i++){

                int achou = jachutou(palavrasecreta[i]);

                if (achou){
                    printf("%c", palavrasecreta[i]);
                } else{
                    printf("_ "); 
                }  
            }
        printf("\n");
    }
    void adicionapalavra(){
        char quer;

        printf("Vôce deseja adicionar uma nova palavra no jogo (S/N)");
        scanf("%s", &quer);

        if (quer == 'S') {
            char novapalavra[20];
            printf("Qual nova palavra: ");
            scanf("%s", &novapalavra);

            FILE* f;
            f = fopen("palavra.txt", "r+");
            if(f == 0){
               printf("Desculpe, banco de dados não encontrado\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("Desculpe, banco de dados não encontrado\n\n");
            exit(1);
        }
        int qtdepalavras;
        fscanf(f, " %d", &qtdepalavras);

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

        for (int i = 0; i <= randomico; 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 = 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 main(){
        abertura();
        escolhepalavra();

        do
        {
            desenhaforca(); 
            chuta();

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

            adicionapalavra();
    }

warning: format ‘%s’ expects argument of type ‘char ’, but argument 2 has type ‘char ()[20]’ [-Wformat=] 55 | scanf("%s", &novapalavra); | ^ ~ | | | | | char (*)[20] | char *

1 resposta

Olá, Alan! Tudo bem?

Rodei seu código aqui e não apresentou esse erro.

Você continua encontrando o mesmo erro?

Aguardo o retorno.

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