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