【发布时间】:2020-04-10 09:17:06
【问题描述】:
我是 C 语言的新手,我写这段代码是为了好玩。在这里,我先取用户名,然后从用户那里取一个猜测数字。我写了一个函数来检查 number 是否是 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");
}
}
但是,当我放入整数时,它工作正常,但当我放入字符串或浮点数时,它只会运行循环直到结束。
【问题讨论】:
-
因为任何无法被
scanf转换的输入都保留在输入缓冲区中。请使用fgets和sscanf。 -
或者清除输入缓冲区。
-
一般
scanf不是为交互式用户输入而设计的。使用fgets,后跟ssccanf。 -
请注意,
scanf("%d",&userGuess);将返回1输入1.1(并且忽略.1)但会失败(返回0)输入.1. -
有没有办法用
scanf做到这一点?