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

ERRO: zsh: command not found: S

Olá pessoal, espero que estejam todos bem!

Revisei o meu código varias vezes e não estou entendendo o oque está acontecendo. No momento que o programa pergunta se queremos adicionar uma palavra nova, e respondemos com S, o terminal me retorna "zsh: command not found: S".

Alguém pode me dar uma luz?

Segue o código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "forca.h"

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

void abertura() {
    printf("******************************\n");
    printf("*        JOGO DA FORCA       *\n");
    printf("******************************\n\n");
}

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

        int achou = jachutou(palavrasecreta[i]);

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

    }
    printf("\n");
}

void adicionarpalavra() {
    char sim;
    printf("Você deseja adicionar uma nova palavra no jogo? (S/N)\n");
    scanf("%c", &sim);

    if(sim == 'S') {
        char novapalavra[20];
        printf("Qual a nova palavra?(Digite em letras maiúsculas) \n");
        scanf("%s", novapalavra);

        FILE* f;

        f = fopen("palavras.txt", "r+");
        if(f == 0) {
        printf("Banco de dados não disponível...\n\n");
        exit(1);
    }
        int qtd = 0;
        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);
    }
}


void escolhepalavra() {
    FILE* f;

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

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

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

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

    fclose(f);
}

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


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 main() {

    escolhepalavra();
    abertura();

    do {
        desenhaforca();
        chuta();

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

    adicionarpalavra();

}

forca.h:

void abertura();
void chuta();
void desenhaforca();
void escolhepalavra();
int acertou();
int enforcou();
int jachutou(char letra);
void adicionarpalavra();

palavras.txt:

9
MELANCIA
CARRO
ELEFANTE
BOLA
PEIXE
FUTEBOL
CAFEINA
BASQUETE
CONTROLE

Obrigada desde já :))))

3 respostas

Olá,

Vc está digitando 's' (Minusculo) ou 'S' (Maiusculo ?

Pelo teu teste:

if(sim == 'S')

Vc testa 'S' maiusculo, se estiver minusculo ele não vai passar.

Olá Diego! Obrigada por responder!

E sim, utilizei maiusculo. E mesmo assim, ele não encontra :( Inclusive, já modifiquei pra minúsculo e o erro persiste...

solução!

Oi gente, acabei descobrindo o que aconteceu :) Mexi no "void desenhaforca()

void desenhaforca() {
    for(int i = 0; i < strlen(palavrasecreta); i++) {
        if(jachutou(palavrasecreta[i]))){ <------ Alterei aqui

            printf("%c", palavrasecreta[i]);

        } else {
               printf("_ "); 
        }

    }
    printf("\n");
}

Agora, tudo funcionando! Obrigada :))))