C scanf()问题?
发布时间:2020-12-16 07:13:31 所属栏目:百科 来源:网络整理
导读:在这个简单的猜数游戏中,scanf()在main中第二次没有工作.如果有人能解释为什么不起作用以及如何解决它,我将非常感激. 有关如何清理此代码的任何提示?谢谢! #includestdio.h#includestdlib.h#includetime.hint guessed = 0;int guesses = 0;int total_guess
在这个简单的猜数游戏中,scanf()在main中第二次没有工作.如果有人能解释为什么不起作用以及如何解决它,我将非常感激.
有关如何清理此代码的任何提示?谢谢! #include<stdio.h> #include<stdlib.h> #include<time.h> int guessed = 0; int guesses = 0; int total_guesses = 0; int range_top = 1; int generate_random_number() { srand(time(NULL)); return (rand() % range_top); } void take_guess(int num) { int guess; printf("what is your guess: "); scanf("%i",&guess); if(guess == num) { guessed = 1; } else if(guess>num) { printf("Your guess was too high,n"); } else { printf("Your guess was too low.n"); } } int main(void) { printf("This is a game in Cn"); printf("Would you like to play? (y/n): "); char play; scanf("%c",&play); while(play == 'y') { printf("I am thinking of a number between 0 and %in",range_top); int num = generate_random_number(); while(guessed ==0) { take_guess(num); guesses++; } printf("It took you "); printf("%i",guesses); printf(" guesses to win.n"); printf("Would you like to play again? (y/n): "); scanf("%c",&play); guessed = 0; guesses = 0; total_guesses+=guesses; } printf("goodbye!"); } 解决方法
这是一个经典的新手错误.
scanf("%c",&play); 读取take_guess中的数字后,将读取输入流中剩余的换行符. 使用 scanf(" %c",&play); 代替. 如果格式说明符中的%c前面有空格字符,则该函数将从输入流中读取第一个非空白字符.否则,它将从输入流中读取第一个可用字符. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |