No meu código eu queria fazer com que ao invés de apenas 1 arquivo com nomes de frutas também tivesse outras coisas, mas agora meu código é compilado normalmente, mas não funciona! Ele está assim:
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <string.h>
#include "jogodaforca.h"
int main() {
abertura();
char palavrasecreta[20];
char chutes[26];
int chutesdados = 0;
escolheapalavra(palavrasecreta);
do {
escreverletra(palavrasecreta, chutes, chutesdados);
chuta(chutes, &chutesdados);
}while (!enforcou(chutesdados, chutes, palavrasecreta));
mensagemdederrota(palavrasecreta);
jogardenovo();
}
void jogardenovo() {
char novojogo;
printf("\n");
printf("Quer tentar denovo? (S) ou (N)");
scanf(" %c", &novojogo);
printf("\n");
if (novojogo == 'S') {
printf("Entao vamos la! :)");
Sleep(3000);
system("cls");
main();
}
else {
printf("Que pena! :(");
Sleep(3000);
system("cls");
exit(0);
}
}
void abertura() {
system("cls");
printf("\n");
printf("********************************\n");
printf("* Bem vindo ao jogo da forca *\n");
printf("********************************\n\n");
printf("Tente adivinhar a palavra secreta! Lembre-se de sempre usar letra MAIUSCULA e nao dar espaco!\n\n");
}
void escolheapalavra(char palavrasecreta[20]) {
FILE* arquivos[15];
printf("Escolha o tipo da palavra que voce ira adivinhar\n\n");
FILE* arquivoescolhido = pegararquivos(arquivos);
int qtdepalavras;
fscanf(arquivoescolhido, "%d", &qtdepalavras);
srand(time(0));
int randomico = rand() % qtdepalavras;
for (int j = 0; j <= randomico; j++) {
fscanf(arquivoescolhido, "%s", palavrasecreta);
}
for (int i = 0; i < 14; i++) {
fclose(arquivos[i]);
}
}
void ganhou() {
printf("\n\n");
printf("Ha essa era a palavra parabens voce ganhou!!! :)\n");
Sleep(1000);
jogardenovo();
}
void mensagemdederrota(char palavrasecreta[20]) {
printf("\n");
printf("Voce perdeu, a palavra era %s\n", palavrasecreta);
}
bool enforcou(int chutesdados, char chutes[26], char palavrasecreta[20]) {
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;
}
void chuta(char chutes[26], int* chutesdados) {
char chute;
printf("\n");
printf("Chute uma letra ");
scanf(" %1c", &chute);
printf("\n");
chutes[(*chutesdados)] = chute;
(*chutesdados)++;
}
int jachutou(char palavrasecreta, char chutes[26], int chutesdados) {
bool achou = 0;
for (int j = 0; j < chutesdados; j++) {
if (chutes[j] == palavrasecreta) {
achou = 1;
break;
}
}
return achou;
}
void escreverletra(char palavrasecreta[20], char chutes[26], int chutesdados) {
int acertou = 1;
for (int i = 0; i < strlen(palavrasecreta); i++) {
char espaco = '-';
bool achou = jachutou(palavrasecreta[i], chutes, chutesdados);
if (achou) {
printf("%c ", palavrasecreta[i]);
}
else if (palavrasecreta[i] == espaco) {
printf("- ");
}
else {
printf("_ ");
acertou = 0;
}
}
if (acertou) {
ganhou();
}
}
FILE* pegararquivos(FILE* arquivos[15]) {
int tipodapalavra;
arquivos[0] = fopen("palavrasfrutas.txt", "r");
arquivos[1] = fopen("palavrasanimais.txt", "r");
printf("(1) Frutas\n");
printf("(2) Animais\n");
printf("\n");
printf("Escolha ");
scanf("%d", tipodapalavra);
tipodapalavra += -1;
printf("%d", tipodapalavra);
if (tipodapalavra > 0|| tipodapalavra <= 1) {
tipodapalavra = 0;
}
return arquivos[tipodapalavra];
}
Mas quando eu rodo ele isso acontece: ,