Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

oii o código está dando erro quando usado no Visual studio

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include "forca.h"

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

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;

}

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

void chuta() { char chute; printf("Qual letra? "); scanf_s(" %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() {

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

for (int i = 0; i < strlen(palavrasecreta); i++) {

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

}
printf("\n");

}

void escolhepalavra() { FILE* f;

f = fopen_s("Texto.txt", "r");
if (f == 0) {
    printf("Banco de dados de palavras não disponível\n\n");
    exit(1);
}

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

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

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

fclose(f);

}

void adicionapalavra() { char quer;

printf("Você deseja adicionar uma nova palavra no jogo (S/N)?");
scanf_s(" %c", &quer);

if (quer == 'S') {
    char novapalavra[20];

    printf("Digite a nova palavra, em letras maiúsculas: ");
    scanf_s("%s", novapalavra);

    FILE* f;

    f = fopen_s("palavras.txt", "r+");
    if (f == 0) {
        printf("Banco de dados de palavras não disponível\n\n");
        exit(1);
    }

    int qtd;
    fscanf_s(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);

}

}

int main() {

abertura();
escolhepalavra();

do {

    desenhaforca();
    chuta();

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

adicionapalavra();

}

Oi Gente, eu estou usando o Visual Studio para programar e copiei o código igualzinho está no arquivo do site, e fiz as alterações que pede nas Funções scanf() e fscanf() pois no Visual Studio diz que tem que ser scanf_s() e fscanf_s(). Mas quando fui compilar está aparecendo o erro

"argumento do tipo "cons char" é incompatível com parâmetro do tipo FILE" relacionado a função f = fopen_s("Texto.txt", "r"); que serve para abrir o arquivo onde ficam as palavras do jogo, o arquivo .TXT. Alguém sabe o por que isso e como resolver?

2 respostas
solução!

Olá, Felipe! Tudo bem?

Desculpe a demora em retornar.

Utilizar o Visual Studio Code para compilar e rodar código em C ou C++ demanda algumas configurações.

Aqui você encontra um passo a passo sobre o que precisa instalar para conseguir utilizar o Visual Studio Code.

Caso não use Windows os passos são diferentes! Se esse for o caso faço um passo a passo para você.

Espero que eu tenha ajudado. Qualquer dúvida estou à disposição!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Entendi, obrigado.