Question: This is C Programming: I have the folloiwng errors in my code and really need help fixing it. Thank you so much: CLIENT.C #include #include
This is C Programming: I have the folloiwng errors in my code and really need help fixing it. Thank you so much:



![Welcome to Hangman! "); char gameFile[100];//character variable named gameFile has 100 char](https://dsd5zvtm8ll6.cloudfront.net/si.experts.images/questions/2024/09/66f15a40929c3_31266f15a4045377.jpg)
CLIENT.C
#include
#include
#include
#include
#include "hangman.h"
int main(int argc, char** argv)
{
printf(" Welcome to Hangman! ");
char gameFile[100];//character variable named gameFile has 100
char letter;//character variable named letter
Hangman hangman;///Hangman named hangman
printf("Please enter the name of the file containing your puzzles: ");
scanf("%s", gameFile);
hangman = createHangmanGame(gameFile);
newHangmanPuzzle(hangman);
printf("Current Puzzle:");
printf("%s ", getGuessedWord(hangman));
printf("Missed Guesses:");
printf("%s ",getStateOfHangman(hangman));
printf("Please guess a letter:");
scanf("%1s",&letter);
while (1)
{
bool ret = guessLetter(hangman, letter);
printf("Current Puzzle:");
printf("%s ", getGuessedWord(hangman));
if ((strcmp(hangman -> currentPuzzleWord, getGuessedWord(hangman)) == 0 ))
{
printf("You WON! ");
return 0;
}
printf("Missed Guesses:");
printf("%s ",getStateOfHangman(hangman));
if (hangman -> missedGuesses > 6)
{
printf("You LOST! ");
return 0;
}
printf("Please guess a letter:");
scanf("%1s",&letter);
}
freeHangmanGame(hangman);
return 0;
}
HANGMAN.C
#include
#include
#include
#include "hangman.h"
struct hangman
{
char **puzzles;
int numPuzzles;
char *currentPuzzleWord;
char *guessedWord;
bool gameOver;
bool gameWon;
int missedGuesses;
};
//will create main game while loading the initial set of puzzles into the struct
Hangman createHangmanGame(char *puzzleFile)
{
struct Hangman* hangmanGame = (struct Hangman *) malloc (sizeof (*hangmanGame));
int count = 0;
int num = 0;
FILE *fp;
fp = fopen("puzzles.txt", "r");
if ( fp != NULL )
{
char line[30];
while ( fgets ( line, sizeof line, fp ) != NULL )
{
size_t len = strlen(line);
if (len > 0 && line[len-1] == ' ') {
line[--len] = '\0';
}
num++;
if ( num == 1 )
{
hangmanGame->numPuzzles = atoi(line);
hangmanGame->puzzles = malloc(sizeof (*(hangmanGame->puzzles)) * (hangmanGame->numPuzzles));
num++;
}
else
{
hangmanGame->puzzles[count] = malloc(sizeof (*(hangmanGame->puzzles[count])) * 30);
strcpy(hangmanGame->puzzles[count], line);
count++;
}
}
}
hangmanGame->currentPuzzleWord = NULL;
hangmanGame->guessedWord = NULL;
hangmanGame->gameOver = false;
hangmanGame->gameWon = false;
hangmanGame->missedGuesses = 0;
return hangmanGame;
}
//Sets up a new puzzle for the player to guess.
void newHangmanPuzzle(Hangman currentHangmanGame)
{
int randomPuzzle;
int curPuzLength;
int i = 0;
time_t t;
srand((unsigned) time(&t));
randomPuzzle = rand() % currentHangmanGame->numPuzzles;
currentHangmanGame->currentPuzzleWord = malloc(sizeof(*(currentHangmanGame->currentPuzzleWord))*30);
strcpy(currentHangmanGame->currentPuzzleWord, currentHangmanGame->puzzles[randomPuzzle]);
curPuzLength = strlen(currentHangmanGame->currentPuzzleWord);
currentHangmanGame->guessedWord = malloc(sizeof(*(currentHangmanGame->guessedWord)) *curPuzLength + 1);
memset(currentHangmanGame->guessedWord, 0, curPuzLength + 1);
for (i = 0; i
{
strcat(currentHangmanGame->guessedWord, "_");
}
}
//Will free the previous array for puzzles and load a new set of
//puzzles from the input file.
void loadPuzzleFile(Hangman currentHangmanGame, char *puzzleFile)
{
int i = 0;
for ( i = 0; i numPuzzles; i++ )
{
free(currentHangmanGame->puzzles[i]);
}
free(currentHangmanGame->puzzles);
free(currentHangmanGame->currentPuzzleWord);
free(currentHangmanGame->guessedWord);
currentHangmanGame->gameOver = false;
currentHangmanGame->gameWon = false;
currentHangmanGame->missedGuesses = 0;
free(currentHangmanGame);
currentHangmanGame = createHangmanGame(puzzleFile);
}
//Will return whether or not the current puzzle has reached
//a state where either the player has won or lost.
bool isPuzzleOver(Hangman currentHangmanGame)
{
return currentHangmanGame->gameOver;
}
//Will return whether or not the current puzzle has been solved.
bool isPuzzleSolved(Hangman currentHangmanGame)
{
return currentHangmanGame->gameWon;
}
//Will return the string for the current state of the word that
//has been guessed thus far (the string that contains both the
//guessed letters and remaining _).
char* getGuessedWord(Hangman currentHangmanGame)
{
return currentHangmanGame->guessedWord;
}
//Will allow the user to guess a letter and then return whether the
//guessed letter was part of the puzzle word.
bool guessLetter(Hangman currentHangmanGame, char letterToGuess)
{
int curPuzLength;
int i = 0;
int found = 0;
curPuzLength = strlen(currentHangmanGame->currentPuzzleWord);
for (i = 0; i
{
if (letterToGuess == currentHangmanGame->currentPuzzleWord[i])
{
currentHangmanGame->guessedWord[i] = letterToGuess;
found = 1;
}
else if (currentHangmanGame->guessedWord[i] == '_')
{
currentHangmanGame->guessedWord[i] = '_';
}
}
if (!found)
{
currentHangmanGame->missedGuesses++;
return false;
}
return true;
}
//Will return the string for the current state of HANGMAN.
char* getStateOfHangman(Hangman currentHangmanGame)
{
char *state = "HANGMAN";
int i = 0;
char *stateString;
if (currentHangmanGame->missedGuesses == 0)
{
stateString[0]='\0';
return stateString;
}
else
{
while (i missedGuesses)
{
stateString[i] = state[i];
i++;
}
return stateString;
}
}
//Will free the memory allocated for the game of Hangman.
void freeHangmanGame(Hangman currentHangmanGame)
{
int i = 0;
for ( i = 0; i numPuzzles; i++ )
{
free(currentHangmanGame->puzzles[i]);
}
free(currentHangmanGame->puzzles);
free(currentHangmanGame->currentPuzzleWord);
free(currentHangmanGame->guessedWord);
currentHangmanGame->gameOver = false;
currentHangmanGame->gameWon = false;
currentHangmanGame->missedGuesses = 0;
free(currentHangmanGame);
}
HANGMAN.H
#ifndef HANGMAN_H #define HANGMAN_H
#include
typdef struct hangman *Hangman;
Hangman createHangmanGame(char *puzzleFile); void newHangmanPuzzle(Hangman currentHangmanGame); void loadPuzzleFile(Hangman currentHangmanGame, char *puzzleFile); bool isPuzzleOver(Hangman currentHangmanGame); bool isPuzzleSolved(Hangman currentHangmanGame); char* getGuessedWord(Hangman currentHangmanGame); bool guessLetter(Hangman currentHangmanGame, char letterToGuess); char* getStateOfHangman(Hangman currentHangmanGame);
void
PUZZLE.TXT
5 hello data structures february bruno
MAKEFILE
all: hangman.x
hangman.x: client.o hangman.o
gcc -Wall client.o hangman.o -o hangman.x
client.o: client.c hangman.c hangman.h
gcc -Wall -c client.c
hangman.o: hangman.c hangman.h
gcc -Wall -c hangman.c
clean:
rm *.salvos *.responses *o *.x
gcc -Wal1 -c client.c In file included from client.c:14:0: h.h:6:8: expecte d ?,, .,, ..', 'asm, or attribute , angmarn before struct" typdef struct hangman *Hangman; hangman.h:8:1 unknown type name 'Hangman Hangman createHangmanGame (char *puzzleFile); hangman.h:9:23 unknown type name 'Hangman void newHangmanPuzzle(Hangman currentHangmanGame); hangman.h:10:21: unknown type name 'Hangman void loadPuzzleFile(Hangman currentHangmanGame, char *puzzleFile); hangman.h:11:19: unknown type name 'Hangman bool ?sPuzzleOver(Hangman currentHangmanGame); hangman.h:12:21: unknown type name 'Hangman bool isPuzzleSolved (Hangman currentHangmanGame); hangman.h:13:22: unknown type name 'Hangman char* getGuessedWord(Hangman currentHangmanGame); hangman.h:14:18: unknown type name 'Hangman bool guessLetter (Hangman currentHangmanGame, char letterToGuess); hangman.h:15:25: unknown type name 'Hangman char getStateOfHangman (Hangman currentHangmanGame); gcc -Wal1 -c client.c In file included from client.c:14:0: h.h:6:8: expecte d ?,, .,, ..', 'asm, or attribute , angmarn before struct" typdef struct hangman *Hangman; hangman.h:8:1 unknown type name 'Hangman Hangman createHangmanGame (char *puzzleFile); hangman.h:9:23 unknown type name 'Hangman void newHangmanPuzzle(Hangman currentHangmanGame); hangman.h:10:21: unknown type name 'Hangman void loadPuzzleFile(Hangman currentHangmanGame, char *puzzleFile); hangman.h:11:19: unknown type name 'Hangman bool ?sPuzzleOver(Hangman currentHangmanGame); hangman.h:12:21: unknown type name 'Hangman bool isPuzzleSolved (Hangman currentHangmanGame); hangman.h:13:22: unknown type name 'Hangman char* getGuessedWord(Hangman currentHangmanGame); hangman.h:14:18: unknown type name 'Hangman bool guessLetter (Hangman currentHangmanGame, char letterToGuess); hangman.h:15:25: unknown type name 'Hangman char getStateOfHangman (Hangman currentHangmanGame)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
