Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Função

#include <iostream>
#include <string.h>
using namespace std;

void testaChute(char chute, char palavraSecreta);

int main()
{
    setlocale(LC_ALL,"");  // Ativa o uso de acentos
    // -------------------------------
    char palavraSecreta[8];
    char chute;
           
    sprintf(palavraSecreta, "MELANCIA");
    
    cout << "Informe seu chute: ";
    cin >> chute;
    
    testaChute(chute, palavraSecreta);
    
    // -------------------------------
    system("pause");
    return 0;
}

testaChute(char chute, char palavraSecreta)
{
    bool acertou = false, enforcou = false, achou = false;
    int i, j, tentativas = 0;
    char chutes[26];
    do
        {
            chutes[tentativas] = chute;
            tentativas++; 
    
            for(int i = 0; i < strlen(palavraSecreta); i++) {
                for(int j = 0; j < tentativas; j++) {
                    if(chutes[j] == palavraSecreta[i]) {
                        achou = true;
                        break;
                    }
                }
                if(achou) {
                    printf("%c ", palavraSecreta[i]);
                    achou = false;
                } else {
                    printf("_ ");
                }

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

O meu compiler está retornando diversos erros nessa função, mas não estou identificando nenhum. Poderia me ajudar a achá-los?

1 resposta
solução!

Olá, Pedro!

O primeiro problema que encontrei foi no seguinte trecho:

char palavraSecreta[8];
char chute;
           
sprintf(palavraSecreta, "MELANCIA");

A função sprintf() armazena uma string terminada com o caractere nulo '\0' na variável palavraSecreta. O problema do seu código é que a variável de destino (palavraSecreta) tem tamanho 8, mas a função sprintf() está retornando uma string de tamanho 9 para ela (8 caracteres da string "MELANCIA" + '\0'). Para resolver basta inicializar a variável palavraSecreta com um tamanho maior (tamanho da string + 1).

O segundo problema envolve a função 'testaChute'. Primeiramente, o cabeçalho da sua função está incorreto, pois a variável palavraSecreta é uma string, e não apenas uma variável do tipo char. Para passar uma string como parâmetro você tem duas opções:

void testaChute(char chute, char palavraSecreta[]);
void testaChute(char chute, char *palavraSecreta);

Ainda falando sobre essa função, na implementação da função, você não explicitou que ela é uma função com valor de retorno do tipo void.

É isso! Espero ter ajudado!