Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
程序不等待来自scanf的输入_C_Stdio - Fatal编程技术网

程序不等待来自scanf的输入

程序不等待来自scanf的输入,c,stdio,C,Stdio,如果我输入一个数字,一切正常。 但当我输入一封信时,它会不断发出“输入一个数字”的垃圾邮件。 它不会再次请求输入。我如何解决这个问题 #include <stdio.h> int main() { int number = 0; int status = 0; do{ printf("enter a number\n"); status = scanf("%d", &number); } while (st

如果我输入一个数字,一切正常。 但当我输入一封信时,它会不断发出“输入一个数字”的垃圾邮件。 它不会再次请求输入。我如何解决这个问题

#include <stdio.h>

int main() {

    int number = 0;

    int status = 0;
    do{
        printf("enter a number\n");
        status = scanf("%d", &number);
    } while (status != 1);

    printf("you chose number %d", number);

    return 0;
}
#包括
int main(){
整数=0;
int status=0;
做{
printf(“输入数字”);
状态=扫描频率(“%d”和编号);
}而(状态!=1);
printf(“您选择了编号%d”,编号);
返回0;
}

@antoh我不认为这是一个重复:几乎是相反的问题。在这里,输入被一个字母阻塞,直到你找到清除输入的方法,这个字母才会消失。绕过它的一个简单方法是使用
fgets
读取输入,并对该字符串应用
sscanf
。如果扫描失败,您只需输入另一个字符串。此问题存在许多重复项。当您输入字母并且
scanf()
需要一个数字时,字母将保留在输入流中。您必须清除输入流。不要像一些人建议的那样使用
fflush(stdin)
;标准明确指出,这会导致未定义的行为,尽管一些实现(尤其是MS)定义了这种行为。