3
respostas

Too many arguments to function

O meu codigo diz que a função jachutou tem parâmetros de mais. Como é o codigo certo?

#include <stdio.h>
#include <string.h>
#include <locale.h>

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

void chuta(char chutes[], int* tentativas) {
    char chute;
    printf("Qual letra? ");
    scanf(" %c", &chute);

    chutes[*tentativas] = chute;
    (*tentativas)++;
}

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

int main() {
    setlocale(LC_CTYPE, "Portuguese");

    char palavrasecreta[20];
    sprintf(palavrasecreta, "melancia");

    int acertou = 0;
    int enforcou = 0;

    char chutes[26];
    int tentativas = 0;

    abertura();

    do {

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

        //imprime a palavra secreta
        for(int i = 0; i < strlen(palavrasecreta); i++) {

            int achou = jachutou(palavrasecreta[i], chutes, tentativas);

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

        chuta(chutes, &tentativas);


    } while (!acertou && !enforcou);

}
3 respostas

Olá Gabriel, tudo bem ? Espero que sim.

Notei que um dos parâmetros da função está separado por ponto e virgula ( ; ) invés de apenas virgula ( , ) :

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

Verifique esse ponto e me diz se isso resolve o erro.

Bons Estudos, Abraço.

Era isso mesmo. Haaaa, da uma vergonha não ter notado isso. Eu achava que era algo complicado. Obrigado mesmo.

Olá Gabriel.

Fica tranquilo, sempre é mais fácil para um programar que está de fora enxergar esses pontos e o erro que o compilador estava gerando não estava ajudando muito, indicava o lugar, mas não era claro o que era o problema.

Quando não encontrar o erro recomendo que peça para outra pessoa olhar o código, o fórum é um ótimo lugar para isso ou tente esquecer um pouco do código por um tempo e depois olhe para ele e talvez esses detalhes quase imperceptíveis fiquem mais evidentes.

Bons estudos.