它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
根据定义,我们可以发现一个问题,如果我定义的类型与我输入的类型不同会有什么后果。在scanf函数中,我们约定,如果读入的值和我们定义的值是同一个类型,我们则返回1。若和我们定义的类型不是同一个类型,则写入数据流中。
于是,有些程序员便写出了如下的代码:
int n;
while(scanf(“%d”,n)!=1){
printf(“pls input again:”);
…...
}
一旦,我们写出这样的判断程序,当我输入错误的时候,整个程序就会陷入死循环,不断的输出“plsinput again:”。原因在于,一旦我们输入一个错误,写入流中。则scanf下次的读取一直都会是提取的错误类型的值。如此恶性循环。
2.scanf()没有限制输入长度。
scanf(“%s”,&s);
如果我们输入的长度大于s定义的长度,则我们输入的数据才会占据下一个内存地址。
解决方法:
scanf_s(“%s”,&s,20);
20表示s的长度。