溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Linux流操作]使用setvbuf函數設置緩沖區的大小

發布時間:2020-09-09 20:01:42 來源:網絡 閱讀:1843 作者:銀河星君 欄目:編程語言
//流操作的緩沖區設置應用實例
//調用setbuf函數來修改標準輸入stdin的緩沖方式
#include <stdio.h>
#include <stdlib.h>
#define SIZE 512                   //定義緩沖區大小
int main(int argc,char *argv[])
{
   char buf[SIZE];                 //緩沖區
   if(setvbuf(stdin, buf, _IONBF, SIZE) != 0)   //將標準輸入的緩沖類型設為無緩沖
   {
       perror("將標準輸入stdin的輸入設置為無緩沖失敗!\n");      //如果設置失敗
       return 1;
   }
   printf("將標準輸入stdin的輸入設置為無緩沖成功!\n");
   printf("stdin類型為");                  //打印緩沖區信息
   if(stdin->_flags & _IO_UNBUFFERED)    //判斷標準輸入流對象的緩沖區類型
   {
      printf("無緩沖\n");
   }
   else if(stdin->_flags & _IO_LINE_BUF)
   {
      printf("行緩沖\n");
   }
   else
   {
      printf("全緩沖\n");
   }
   printf("緩沖區大小為 %ld\n", stdin->_IO_buf_end - stdin->_IO_buf_base);
   //打印緩沖區的大小
   printf("文件描述符為 %d\n", fileno(stdin));  //輸出文件描述符
   if(setvbuf(stdin,buf,_IOFBF,SIZE)!=0)
   {
       //將標準輸入的緩沖類型設為全緩沖,緩存大小為512
       printf("將標準輸入stdin設置為全緩沖失敗!\n");
       return 2;     //出錯退出
   }
   printf("修改標準輸入stdin的類型成功!\n");
   printf("stdin類型為");                    //打印緩沖區信息
   if(stdin->_flags & _IO_UNBUFFERED)  //判斷標準輸入流對象的緩沖區類型
   {
      printf("無緩沖\n");
   }
   else if(stdin->_flags & _IO_LINE_BUF)
   {
      printf("行緩沖\n");
   }
   else
   {
      printf("全緩沖\n");
   }
   printf("緩沖區大小為%ld\n", stdin->_IO_buf_end - stdin->_IO_buf_base);
   //打印緩沖區的大小
   printf("文件描述符為%d\n", fileno(stdin));  //輸出文件描述符
   return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女