一个很简单的程序,但是就是结果不对,help,该如何解决

一个很简单的程序,但是就是结果不对,help
main(   )
{
      int   kc,cj,p,i=0;
      char   key[8];char   c;

    scanf( "%d ",&p);
    printf( "%d ",p);
    gets(key);
    puts(key);
   
}
  为什么这么简单的程序,输入p的值,然后输出p的值,但是gets和puts函数都没有反映的啊,,这是什么原因啊,就是不能输入key的值和得到key的值。大家可以试试看啊。。求救

------解决方案--------------------
在printf()或者scanf()后面加一句 :fflush(stdin);清空缓冲区,并把缓冲区的内容写到标准输出