o codigo funciona normalmente mas na hora de atualizar a quantidade de palavras de 12 para 13 ele gera um numero aleatorio forca.c
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
#include "forca.h"
int chutesDados = 0;
char chutes[26];
char palavraSecreta[26];
void adicionaPalavra() {
char quer;
printf("voce quer adicionar uma nova palavra?(S/N)");
scanf(" %c", &quer);
if (quer == 'S') {
char novaPalavra[26];
printf ("qual a nova Plavara?");
scanf("%s", novaPalavra);
FILE* f;
f = fopen("palavras.txt", "r+");
if (f == 0) {
printf ("desculpe banco de dados não disponivel");
exit(1);
}
int qtd;
fscanf(f, "%d", qtd);
qtd++;
fseek(f, 0, SEEK_SET);
fprintf(f, "%d", qtd);
fseek(f, 0, SEEK_END);
fprintf(f, "%s", novaPalavra);
fprintf (f, "\n%s", novaPalavra);
fclose(f);
}
}
void escolhepalavra() {
FILE* f;
if (f == 0) {
printf ("desculpe banco de dados não disponivel");
exit(1);
}
f = fopen ("palavras.txt", "r");
int qtddeplavras;
fscanf(f, "%d", &qtddeplavras);
srand(time(0));
int randomico = rand() % qtddeplavras;
for (int i = 0; i < randomico; i++) {
fscanf(f, "%s", palavraSecreta);
fclose(f);
}
}
void abertura() {
printf("/****************/\n");
printf("/ Jogo de Forca */\n");
printf("/****************/\n\n");
}
void imprimirForca() {
for (int i = 0; i < strlen(palavraSecreta); i++) {
int achou = jachutou(palavraSecreta[i]);
//imprime a letra ou _
if (achou) {
printf("%c", palavraSecreta[i]);
} else {
printf ("_ ");
}
}
printf("\n");
}
int jachutou(char letra) {
int achou = 0;
for (int j = 0; j < chutesDados; j++) {
if(chutes[j] == letra) {
achou = 1;
break;
}
}
return achou;
}
void chuta() {
char chute;
scanf(" %c", &chute);
chutes[(chutesDados)] = chute;
(chutesDados)++;
}
int ganhou() {
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() {
setlocale (LC_ALL, "portuguese");
int acertou = 0;
escolhepalavra();
abertura();
do
{
imprimirForca();
chuta();
} while (!ganhou() && !enforcou());
if (!ganhou() == 1) {
printf("Parabens Voce ganhou\n");
}
adicionaPalavra();
}
forca.txt
6422477AO
MORANGO
ABACAXI
PERA
BANANA
BATATA
LARANJA
MANGAARROZ
ARROZCAPIVARA
CAPIVARAPERNA
PERNA