关于scanf的一个小疑点

关于scanf的一个小问题
有这样一个程序:
#include   <stdio.h>
{
          int   m;
          scanf( "%d\n ",&m);
          printf( "%d ",m);
}

问题:   在Turbo   c下运行的时候需要输入两次,按两次回车,程序才能继续运行.
            而且输入一次的时候,无论按多少次回车,程序始终停留在后台,等待用户输入.
            另外将\n   换成   \r或者\t   得到的结果也是一样.
            请高手指点其中的原因所在.


------解决方案--------------------
我通过这个问题做了实验,代码如下.
#include "stdio.h "
main()
{ int i,j=6;
scanf( "%d\n\n%d ",&i,&j);
printf( "i = %d, j = %d\n ",i,j);
printf( "%d ",getchar());
printf( "%d ",getchar());
printf( "\nlius\n ");
system( "PAUSE ");
}
结果输入时我只输入时中间只输入一个回车字符程序没有问题.我输入好多个字符也一样正确.
这样我就得到了一个结论.不知道对还是不对.

结论是: 在缓冲区中把多个连续的回车看成是一个.

如果这个结论正确的话. 正如jiarusun000() ( )说的.
你的程序输入一个正数再加一个或多个回车时,编译器只认为它收到的程序要求输入的回车.它就再等待输入结束标志.如果你直接输入回车.它还认为是要求输入的回车字符.不是结束标志.所以一定要把结束标志和回车公开就得输入其它额外的字符再输入回车,这样编译器才知道用户输入完成了.

另外运行时会把输入的额外字符加一个回车留在缓冲区中.这也是我用getchar()检查的原因.