C scanf() 问题?

标签 c input output scanf stdio

在这个简单的猜数字游戏中,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 C\n");
    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 %i\n",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 之前有一个空白字符时,该函数将从输入流中读取第一个非空白字符。否则,它将从输入流中读取第一个可用字符。

关于C scanf() 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236684/

相关文章:

c - C语言简单的http服务器,多进程无法正常工作

c - 串口通讯

javascript - 从表单输入生成对象

javascript - 何时根据用户输入更新表单

r - 使用 R/Shiny 创建动态数量的输入元素

Java - 输出不打印?

javascript - 为什么我的代码不从 if 语句输出字符串?

c - wasm 是否支持对 USB 进行读/写?

c++ - 设置套接字选项以减少 tcp 段之间的时间延迟

关于数组的 C 概念