1
resposta

[Dúvida] Error ao compilar

Olá, meu codigo está com um error na hora de compilar. Meu codigo é esse:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

#include "forca.h"

// variaveis globais char palavrachave[20]; char chutes[26]; int chutesdados = 0;

int acertou(){ for (int i = 0; i < strlen(palavrachave); i++){ if (!jachutou(palavrachave[i])){ return 0; } } return 1; }

int enforcou(){ int erros = 0;

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

    int exite = 0;

    for(int j = 0; j < strlen(palavrachave); j++){
        if (chutes[i] == palavrachave[j]){
            exite = 1;
            break;
        }
    }

    if (!exite) erros++;
}

return erros >= 5;

}

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(palavrachave); i++){

    int achou = jachutou(palavrachave[i]);

    if (achou){
        printf("%c", palavrachave[i]);
    }
    else{
        printf("_");
    }
}
printf("\n\n");

}

void escolhepalavra(){ FILE* f; f = fopen("palavras.txt", "r");

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

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

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

fclose(f);

}

int main(){

abertura();
escolhepalavra();

do{

    desenhaforca();
    chuta(); 

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

}

e ao executa, apresenta os seguinte erros:

[forca.c 2023-02-05 22:12:05.477] ,,forca.c: In function 'acertou': forca.c:13:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < strlen(palavrachave); i++){ ^ forca.c: In function 'enforcou': forca.c:28:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(palavrachave); j++){ ^ forca.c: At top level: forca.c:54:5: error: conflicting types for 'jachutou' int jachutou(char letra){ ^~ forca.c:54:1: note: an argument type that has a default promotion can't match an empty parameter name list declaration int jachutou(char letra){ ^ In file included from forca.c:5:0: forca.h:7:5: note: previous declaration of 'jachutou' was here int jachutou(); ^~ forca.c: In function 'desenhaforca': forca.c:68:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < strlen(palavrachave); i++){

1 resposta

E ai tudo bem? acho que os problemas são na função 'jachutou' deve ter algum erro entre a assinatura e o nome da funcao que ta sendo implementada verifica a assinatura que deve estar em forca.h ta tudo igual a funcao que ta ali acho que na assinatura do arquivo forca.h ta sem o parametro, nos warning acho que ele ta te avisando que vc ta tentando comparar um int sem sinal, com um int com sinal, a funcao strlen traz como retorno um unsigned int, e o teu i é uma int, para nao dar mais o warning pode trocar o tipo da variavel i por unsigned int