当输入浮点数或字符串时,Scanf不能按预期方式工作

问题描述 投票:-1回答:1

我是C语言的新手,我在写这段代码很有趣。在这里,我先获取用户名,然后再从用户那里获取一个猜测数字。我编写了一个函数来检查数字是否为int(仅需要整数输入。)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    char userName[30];
    int userGuess, check;
    int checkGuess(int, int);

    printf("Enter your name - ");
    scanf("%s",&userName);
    int i = 0;
    while(++i<=10)
    {
        printf("Enter Your Guess: ");
        check = scanf("%d",&userGuess);
        checkGuess(userGuess, check);
    }
    return 0;
}

int checkGuess(int userGuess, int check)
{
    if(check == 1)
    {
        printf("yes int, %d.\n",userGuess);
    } else
    {
        printf("Not int\n");
    }

}

但是,当我放置整数时,它可以正常工作,但是当我放置字符串或浮点数时,它将运行循环直到结束。

c scanf
1个回答
0
投票

stdin失败时需要刷新scanf

while (i < 10)
{
    printf("Enter Your Guess: ");
    check = scanf("%d", &userGuess);
    if (check != 1)
    {
        // Flush stdin
        while ((check = fgetc(stdin)) != '\n' && check != EOF);
    }
    else
    {
        // Increment i only when scanf has success
        i++;
    }
}

Why to use fgets() over scanf() in C?

© www.soinside.com 2019 - 2024. All rights reserved.