1
resposta

Erro ao abrir o arquivo para adicionar a palavra nova

Já revisei muitas vezes porém segue dando o mesmo erro. Ele não consegue abrir o arquivo TXT na hora de acicionar uma palavra nova.

Não sei se pode ser algum erro no visual studio code ou onde errei no código.

Agradeço muito se alguém puder me ajudar.

#include <stdio.h>
#include <string.h>
#include <time.h>
#include "jogo.h"

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

int enforcou() {
    int erros = 0;

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

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

        if(!existe) erros++;    
    }

    return erros >= 5;
}

int ganhou() {
    for(int i = 0; i < strlen(palavra); i++) {
        if(!jachutou(palavra[i])) {
            return 0;
        }
    }

    return 1;
}

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

void chuta(){
        char chute; 
        printf("Qual a letra:");
        scanf(" %c", &chute);

        chutes[chutesdados] = chute; //Utilizando o contator para salvar os chutes na variavel
        (chutesdados) ++;
        printf("Tentativa: %d\n", chutesdados);
}

int jachutou(char letra){
    int achou = 0;

    for(int j = 0; j < chutesdados; j++) {  // contator para salvar cada chute do jogador
        if(chutes[j] == letra) {
            achou = 1;
            break;
        }
    }
    return achou;
}

void desenhoforca(){

    for(int i = 0; i < strlen(palavra); i++) { // strlen serve para somar as letras do char         

        int achou = jachutou(palavra[i]);

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

    printf("\n");    
}

void escolhepalavra() {

    FILE* f;
    f = fopen("palavras.txt", "r");
    if(f == 0) {
        printf("Desculpe!\nNosso servidor esta foda do ar no momento, tente novamente em alguns instantes.\n");
        exit(1);
    }

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

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

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

    fclose(f);
}

void adicionapalavra() {
    char quer;
    printf("Voce deseja adicionar uma palavra nova? (S/N)\n");
    scanf(" %c", &quer);

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

        FILE* f;
        f = fopen("palavras.txt", "r+");
        if(f == 0) {
            printf("Nao foi possivel acessar o banco de dados no momento.\nTente novamente.\n");
            exit(1);
        }
        printf("Digite a palavra:\n");
        scanf("%s", novapalavra);

        int qtd;
        fscanf(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{
        desenhoforca();
        chuta();

    } while (!ganhou() && !enforcou());
    adicionapalavra();
}
1 resposta

Por aqui eu abri e editei seu código pelo Sublime Text, o único erro que deu foi apenas pela ausência do header #include <stdlib.h>. Depois que incluí tudo funcionou certinho como deveria. Se não for essa a causa do problema, dá uma olhada no arquivo palavras.txt e vê se tá tudo certo por lá!