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:

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 #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

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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!