pointers - C Code - Guessing Game - Function Issues -


ok, been looking @ hours , because it's late, i'm braindead. code supposed accomplish following:

  1. display instructions
  2. ask user number of games play
  3. for each game a. letter file b. play 1 game i. while still has guesses ii. guess player iii. compare guess letter file iv. if guess correct, return 1 v. else increase counter vi. return 0 if 5 guesses incorrect c. check win or lose

this code have far, ideas how thing run properly?:

#define _crt_secure_no_warnings #define maxguesses 5 #include <stdio.h>   //pre-processor directives  void gamerules(); //game instructions  int singlegame(char fileletter); //checks guesses, returns 0 after 5 incorrect attempts  char retrieveguess(); //prompts user guess , returns guess //called inside singlegame function  int guessedit(char answer, char inputletter); //lets user know if answer comes before or after guess. //returns 1 if answer correct, , 0 incorrect. //called inside singlegame function.     int main() {     char fileletter = 'a';     file* fileptr;     int numofgames = 0;     int counter = 0;     //run  //rules of game gamerules();  //file pointer opens file, "r" stands reading file fileptr = fopen("lettersin.txt", "r");  /* file checking if-else  if (fileptr == null) {     printf("i don't exist"); } else {     printf("i'm alive"); } */    printf("how many games play? (pick 1-4)\n"); scanf("%d", &numofgames);  (counter = 0; counter < numofgames; counter++) {     //pulls letter file , writes variable "fileletter"     //note self: make sure include "fileptr" fscanf knows pull     fscanf(fileptr, " %c", &fileletter);     singlegame(fileletter); }  //closes file, not necessary now, later on in bigger programs may need more files fclose(fileptr); return 0; }  //game rules function void gamerules() { printf("welcome letter guessing game\n"); printf("you enter number of games want play (1-4 games).\n"); printf("you have 5 chances guess each letter.\n"); printf("let's begin:\n"); }  //single game function int singlegame(char fileletter) { int numguesses = 0;  while (numguesses < maxguesses) {     retrieveguess();     numguesses = numguesses + 1; }  return 0; }  //guess retrieval function char retrieveguess() { char inputletter; printf("what guess? (lowercase letters only, please)\n"); scanf(" %c", &inputletter); int guessedit(char fileletter, char inputletter); }  //correct, or not, function int guessedit(char fileletter, char inputletter) { if (fileletter == inputletter) {     printf("you guessed it!\n");     return '1'; }  else if (inputletter < fileletter) {     printf("the letter comes after guessed letter.\n");     return '0'; }  else {     printf("the letter comes before guessed letter.\n");     return '0'; } } 

a few things:

//single game function int singlegame(char fileletter) {     int numguesses = 0;      while (numguesses < maxguesses)     {         retrieveguess();         numguesses = numguesses + 1;         // should return 1 here if guess right, no?         // like:         // char guessedchar = retrieveguess();         // place call function guessedit here , if         // 1 return result (if it's 0, don't return, let keep looping)     }      return 0; } 

this function:

//guess retrieval function char retrieveguess() { char inputletter; printf("what guess? (lowercase letters only, please)\n"); scanf(" %c", &inputletter); int guessedit(char fileletter, char inputletter); } 

isn't returning anything. need return statement each function define returning something. also, don't think last statement makes sense, return inputletter

this function:

//correct, or not, function int guessedit(char fileletter, char inputletter) {     if (fileletter == inputletter)     {         printf("you guessed it!\n");         return '1';     }      else if (inputletter < fileletter)     {         printf("the letter comes after guessed letter.\n");         return '0';     }      else     {         printf("the letter comes before guessed letter.\n");         return '0';     } } 

is returning char ('1'/'0') though declares returning int. want write return 1;/return 0;. should place put comments


Comments