Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

My program stops after I guess a letter it is supposed to put it on the guess li

ID: 3908338 • Letter: M

Question

My program stops after I guess a letter it is supposed to put it on the guess line and display the letters that are correct. Language c

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <stdbool.h>

#include <ctype.h>

int main(void) {

const int MAX_MISSES = 7;

char guess[2];

char lettersGuessed[27];

char puzzlePhrase[50];

char displayPhrase[50];

int numOfMisses;

int numOfUnsolvedCharcters;

int i;

bool guessFound;

printf("Hangman Time!! ");

printf("-------------- ");

printf("Player 1 enter puzzle phrase(up to 50 characters): ");

gets_s(puzzlePhrase, 50);

for (i = 0; i <= 25; ++i) {

printf(" ");

}

strcpy_s(displayPhrase, 50, puzzlePhrase);

for (i = 0;i < strlen(displayPhrase); ++i) {

if (displayPhrase[i] != ' ') {

displayPhrase[i] = '_';

}

}

numOfUnsolvedCharcters = strlen(puzzlePhrase);

numOfMisses = 0;

strcpy_s(lettersGuessed, 27, "");

while ((numOfUnsolvedCharcters > 0) && (numOfMisses < MAX_MISSES)) {

if (numOfMisses == 0) {

printf("----------");

printf(" ");

printf("| | ");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 1) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 2) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 3) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

printf(" ''");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 4) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

printf(" ''");

printf(" |");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 5) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

printf(" ''");

printf(" |");

printf(" |");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 6) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

printf(" ''");

printf(" |");

printf(" |");

printf(" /");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

else if (numOfMisses == 7) {

printf("----------");

printf(" ");

printf("| | ");

printf(" O");

printf(" /");

printf(" ''");

printf(" |");

printf(" /");

printf(" ''");

for (i = 0;i < 7; i++) {

printf("| ");

}

printf("|");

printf("___________ ");

}

printf("Guesses: %s ", lettersGuessed);//May need to change this to add %c

printf("Phrase: %s ", displayPhrase); //May need to change this to add %s

printf("Guess a letter:");

scanf_s("%s", guess);

while(!isalpha(guess[i])){

scanf_s("%s", guess);

}

strcat_s(lettersGuessed, 50, guess);

guessFound = false;

for (i = 0; i < strlen(puzzlePhrase); ++i) {

if (toupper(puzzlePhrase[i]) == toupper(guess[0])){

displayPhrase[i] == guess[0];

--numOfUnsolvedCharcters;

guessFound = true;

}

if (!guessFound) {

++numOfMisses;

}

}

printf("%s", displayPhrase);

if (numOfUnsolvedCharcters > 0) {

printf("NOT GOOD AT GUESSING I SEE - BETTER LUCK NEXT TIME :) ");

}

else {

printf("WINNER!!! ----- PLAY AGAIN ;) ");

}

return 0;

}

}

Explanation / Answer

The issue here is that the value of i is 7 while accepting the guess character.

while (!isalpha(guess[i]))

That must be reset to 0 like i = 0;because of that exception comes.

additionally we have to use gets_s to accept guess character array as using scanf_s() is not functioning as it should be due to unwanted characters in input stream buffer.

Also the dimension filed in strcat_s(lettersGuessed, 50 , guess); Instead of 50 it must be 2 as the dimension of source array guess so that stack corruption dont happen.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote