C 使用fgets()获取输入;并保存不同于输入的数据

C 使用fgets()获取输入;并保存不同于输入的数据,c,unix,C,Unix,我拿了两个程序,并将它们链接起来作为家庭作业,它要求用户输入,并保存一个与输入不同的值。程序1中的代码是教授的,而不是用于调试的打印语句,其他人对此没有任何问题。但我很好奇为什么它不能正确地保存 程序1: #include <stdlib.h> #include <stdio.h> #define TEXT_LEN 256 // // Declarations go here: // // PU

我拿了两个程序,并将它们链接起来作为家庭作业,它要求用户输入,并保存一个与输入不同的值。程序1中的代码是教授的,而不是用于调试的打印语句,其他人对此没有任何问题。但我很好奇为什么它不能正确地保存

程序1:

#include        <stdlib.h>
#include        <stdio.h>

#define         TEXT_LEN        256


//
//      Declarations go here:
//

//  PURPOSE:  To hold the computer's answer.
extern int      answer;

//  PURPOSE:  To, in a loop:
//      (1) get an integer that from the user by calling 'getGuess()',
//      (2) increment 'count',
//      (3) compare the user's guess with 'answer'
//        (3a) if they are equal, print how may guesses the user used and
//             quit the loop,
//        (3b) if the guess too high print print "Too high!\n"
//        (3c) if the guess too low print print "Too low!\n"
//      No parameters.  No return value.
extern
void            playGame        ();


//
//      Function and variables go here:
//

//  PURPOSE:  To keep track of the number of guesses the user used.
int             count   = 0;


//  PURPOSE:  To set 'answer' to the computer's answer.  No parameters.  No
//      return value.
void            generateAnswer  ()
{
  answer        = rand() % 256;
  printf("answer: %d",answer);
}
//  PURPOSE:  To ask the user for an integer, and to return it.  No parameters.
int     getGuess    ()
{
  char  numberText[TEXT_LEN];

  printf("Please guess my number in 0..255: ");
  fgets(numberText,TEXT_LEN,stdin);
  return(strtol(numberText,NULL,10));
}


 int    main    ()
{
  generateAnswer();
  playGame();
  return(EXIT_SUCCESS);
}
#include <stdlib.h>
#include <stdio.h>
#define         TEXT_LEN        256

int answer;
int count;
void playGame();
int numberText;

void playGame()
{
 printf("user input: %d",numberText);
 getGuess();
 if( answer > numberText)
 {
  printf("Too Low!");
  count += 1;
 }
 if( answer < numberText)
 {
  printf("Too High!");
  count += 1;
 }
 if (answer == numberText)
 {
  count += 1;
  printf("Just right! It took %d tries",count);
  return;
 }
 playGame();
}
无任务

getGuess();
if( answer > numberText)
应该是

answer = getGuess();
if( answer > numberText)
从评论中写下答案并转移到社区,这样OP就可以结束这个

学分:

fgets()
不在发布的代码中。您提供了两个源文件,但它们甚至不构成一个程序。
numberText=getGuess();printf(“用户输入:%d\n”,numberText)
或者如果@BLUEPIXY对您来说过于简洁,那么
getGuess()
函数将返回猜测值。它不以任何其他方式传达信息。您的代码忽略返回值,但假设变量
answer
以某种方式被设置为该值。playgame()函数是递归函数,它应该是一个do。。。而不是循环。除了用户猜测正确的数字外,递归特性没有正出口。用户可以在猜到正确的数字之前猜到所有255个可能的数字。即使这样,用户也可能不断地重新猜测相同的错误数字,因此程序永远不会结束。即使是255深的递归也不是一个好计划。发布代码的无限递归是一个非常糟糕的主意。