1
resposta

Ao usar o Header File o compilador não entende as variaveis globais.

Sem o header o codigo roda, com o header aparece a seguinte mensagem:

10 1 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] expected initializer before 'char' C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'void escolhepalavra()': 57 19 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'void desenhaforca()': 65 28 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'int enforcou()': 84 29 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp In function 'int ganhou()': 100 28 C:\Users\thiag\Documents\Dev C\Jogo da Forca.cpp [Error] 'palavrasecreta' was not declared in this scope

Codigo:

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



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

void abertura(){

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

void chuta(){

    char chute;
    printf("\nQual letra? ");
    scanf(" %c", &chute);

    chutes[chutesdados] = chute;
    }    
int jachutou(char letra){

    int achou = 0;

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

    FILE* f;
    f = fopen("palavras.txt", "r");
        if(f == 0){
            printf("O Banco de dados nao esta disponivel\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);

}
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");
}
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;
}

int main() {


    int acertou = 0;


    abertura();
    escolhepalavra();

do {    
    desenhaforca();
    chuta();

    chutesdados++;

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

}

O forca.h está assim:

void abertura();
void chuta();
void escolhepalavra();
void desenhaforca();
int jachutou(char letra);
int enforcou();
int ganhou();
void escolhepalavra()
1 resposta

RESOLVIDO: Faltava um ";" na ultima linha do header.

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