scanf 不等待整数输入
scanf is not waiting for an integer input
printf("Enter an integer: ");
status = scanf("%d", &integer);
if (status == 0){
do{
printf("Please enter an integer: ");
status = scanf("%d", &integer);
}
while (status == 0);
}
我试图阻止用户输入字符类型的数据。但是,在提示 "Please enter an integer: " 之后,它不会等待输入。因此,每当我在第一个提示符下输入一个字母时,它就会进入无限循环。我该如何解决?任何帮助将不胜感激!
您的 %integer 应该声明为 int。
像这样:
int integer;
printf("Please input an integer value: ");
scanf("%d", &integer);
你需要先清理缓冲区,你可以这样使用fflush(stdin);
:
int integer, status=0;
if (status == 0)
{
do
{
printf("\nPlease enter an integer: ");
status = scanf("%d", &integer);
fflush(stdin);
}
while (status == 0);
}
它不在标准 C 中使用 fflush(stdin)
但您可以通过其他方式清理缓冲区。
您可以构建自己的函数来清理缓冲区,如下所示:
void flushKeyBoard()
{
int ch; //variable to read data into
while((ch = getc(stdin)) != EOF && ch != '\n');
}
要清洁屏幕调用此函数:
void clrscr()
{
system("@cls||clear");
}
最终代码:
#include <stdio.h>
void clrscr()
{
system("@cls||clear");
}
void flushKeyBoard()
{
int ch; //variable to read data into
while((ch = getc(stdin)) != EOF && ch != '\n');
}
int main()
{
int integer, status=0;
if (status == 0)
{
do
{
printf("\nPlease enter an integer: ");
status = scanf("%d", &integer);
flushKeyBoard();
clrscr();
}
while (status==0);
}
}
printf("Enter an integer: ");
status = scanf("%d", &integer);
if (status == 0){
do{
printf("Please enter an integer: ");
status = scanf("%d", &integer);
}
while (status == 0);
}
我试图阻止用户输入字符类型的数据。但是,在提示 "Please enter an integer: " 之后,它不会等待输入。因此,每当我在第一个提示符下输入一个字母时,它就会进入无限循环。我该如何解决?任何帮助将不胜感激!
您的 %integer 应该声明为 int。 像这样:
int integer;
printf("Please input an integer value: ");
scanf("%d", &integer);
你需要先清理缓冲区,你可以这样使用fflush(stdin);
:
int integer, status=0;
if (status == 0)
{
do
{
printf("\nPlease enter an integer: ");
status = scanf("%d", &integer);
fflush(stdin);
}
while (status == 0);
}
它不在标准 C 中使用 fflush(stdin)
但您可以通过其他方式清理缓冲区。
您可以构建自己的函数来清理缓冲区,如下所示:
void flushKeyBoard()
{
int ch; //variable to read data into
while((ch = getc(stdin)) != EOF && ch != '\n');
}
要清洁屏幕调用此函数:
void clrscr()
{
system("@cls||clear");
}
最终代码:
#include <stdio.h>
void clrscr()
{
system("@cls||clear");
}
void flushKeyBoard()
{
int ch; //variable to read data into
while((ch = getc(stdin)) != EOF && ch != '\n');
}
int main()
{
int integer, status=0;
if (status == 0)
{
do
{
printf("\nPlease enter an integer: ");
status = scanf("%d", &integer);
flushKeyBoard();
clrscr();
}
while (status==0);
}
}