簡體   English   中英

C scanf()問題?

[英]C scanf() issues?

在這個簡單的猜數游戲中,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的數字后,將讀取輸入流中take_guess

使用

scanf(" %c",&play);

代替。

如果格式說明符中的%c前面有空格字符,則該函數將從輸入流中讀取第一個非空白字符。 否則,它將從輸入流中讀取第一個可用字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM