加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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前面有空格字符,则该函数将从输入流中读取第一个非空白字符.否则,它将从输入流中读取第一个可用字符.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读