scanf输入、printf输出缓冲区 & gets/fgets

输入缓冲区:

   键盘->键盘缓冲区->输入缓冲区->程序

   输入缓冲区清除的条件:只有当其中的内容被读走的时候才会清除

   /**************************************************/

   /*输入缓冲区*/

   /**************************************************/

   #include <stdio.h>

   int main()

   {

       int a,b,c,d,e;

       if(scanf("%d",&a)==0)

       {

           scanf("%*[^\n]");

           scanf("%*c");

       }

       scanf("%d",&b);

       scanf("%d",&c);

       scanf("%d",&d);

       scanf("%d",&e);

       printf("%d %d %d %d %d\n",a,b,c,d,e);

       return 0;

   }


输出缓冲区:

   程序->输出缓冲区->屏幕

   条件:

   <1>\n

   <2>程序结束

   <3>输出缓冲区满(4kb)

   <4>人工刷新(fflush(stdout))

   /***********************************************/

   /*输出缓冲区*/

   /***********************************************/

   #include <stdio.h>

   int main()

   {

       printf("hello");

       fflush(stdout);

       while(1);

   }


<1>char* gets(char*)从输入缓冲区读取一行

   不考虑缓冲区的大小,可能溢出

<2>fgets(char* str,size_t size,FILE* stream)会在读入字符串的后面自动加上'\0'

   char* str:指向缓冲区的指针

   size_t size:缓冲区的大小

   FILE* stream:文件指针(stdin)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章