输入缓冲区,
因为每次scanf的读入都并非直接从用户的输入得来,而是由用户的输入至输入缓冲区,而后scanf再从输入缓冲区将其读出。
如果在某些情况清空输入缓冲区,将会导致数据堵塞,无法读入。例如:
1 int a; 2 printf("Please enter a number: "); 3 scanf("%d",&a); 4 printf("Please enter a number again: "); 5 sacnf("%d",&a);
如上方代码,如果用户老老实实输入两个数字还好,要是在第一个scanf输入一个char,比如'a',则输入缓冲区堵塞,程序会跳过,连带第二个scanf也无法读入。
所以需要加上这样一组代码:
1 int a; 2 printf("Please enter a number: "); 3 scanf("%d",&a); 4 5 scanf("%*[^\n]"); 6 scanf("%*c"); 7 8 printf("Please enter a number again: "); 9 sacnf("%d",&a);
中间新加的两句scanf就是起到清空输入缓冲区的作用,哪怕用户输入'a'也不会影响下一次的输入。
浙公网安备 33010602011771号