1. 程式人生 > >fopen與open的區別(好文)

fopen與open的區別(好文)

  1. int open(constchar *path, int access,int mode)  
  2.     path 要開啟的檔案路徑和名稱                             
  3.     access 訪問模式,巨集定義和含義如下:                          
  4.         O_RDONLY         1    只讀開啟                           
  5.         O_WRONLY         2    只寫開啟                           
  6.         O_RDWR           4    讀寫開啟                       
  7.         還可選擇以下模式與以上3種基本模式相與:                      
  8.             O_CREAT     0x0100   建立一個檔案並開啟                  
  9.             O_TRUNC     0x0200   開啟一個已存在的檔案並將檔案長度設定為0,其他屬性保持           
  10.             O_EXCL      0x0400   未使用                              
  11.             O_APPEND    0x0800   追加開啟檔案                       
  12.             O_TEXT      0x4000   開啟文字檔案翻譯CR-LF控制字元       
  13.             O_BINARY    0x8000   開啟二進位制字元,不作CR-LF翻譯                                                          
  14.     mode 該引數僅在access=O_CREAT方式下使用,其取值如下:        
  15.         S_IFMT      0xF000   檔案型別掩碼                        
  16.         S_IFDIR     0x4000   目錄                                
  17.         S_IFIFO     0x1000   FIFO 專用                           
  18.         S_IFCHR     0x2000   字元專用                            
  19.         S_IFBLK     0x3000   塊專用                              
  20.         S_IFREG     0x8000   只為0x0000                          
  21.         S_IREAD     0x0100   可讀                                
  22.         S_IWRITE    0x0080   可寫                                
  23.         S_IEXEC     0x0040   可執行  
  1. FILE *fopen(char *filename, char *mode)  
  2.     filename 檔名稱  
  3.     mode 開啟模式:                                              
  4.         r   只讀方式開啟一個文字檔案                             
  5.         rb  只讀方式開啟一個二進位制檔案                           
  6.         w   只寫方式開啟一個文字檔案                             
  7.         wb  只寫方式開啟一個二進位制檔案                           
  8.         a   追加方式開啟一個文字檔案                             
  9.         ab  追加方式開啟一個二進位制檔案                           
  10.         r+  可讀可寫方式開啟一個文字檔案                         
  11.         rb+ 可讀可寫方式開啟一個二進位制檔案                       
  12.         w+  可讀可寫方式建立一個文字檔案                         
  13.         wb+ 可讀可寫方式生成一個二進位制檔案                       
  14.         a+  可讀可寫追加方式開啟一個文字檔案                     
  15.         ab+ 可讀可寫方式追加一個二進位制檔案  

區別:

1、緩衝檔案系統與非緩衝系統的區別

緩衝檔案系統(fopen):在記憶體為每個檔案開闢一個快取區,當執行讀操作,從磁碟檔案將資料讀入記憶體緩衝區,裝滿後從記憶體緩衝區依次讀取資料。寫操作同理。 記憶體緩衝區的大小影響著實際操作外存的次數,緩衝區越大,操作外存的次數越少,執行速度快,效率高。緩衝區大小由機器而定。 藉助檔案結構體指標對檔案管理,可讀寫字串、格式化資料、二進位制資料。 非緩衝檔案系統(open):依賴作業系統功能對檔案讀寫,不設檔案結構體指標,只能讀寫二進位制檔案。 2、open屬於低階IO,fopen屬於高階IO 3、open返回檔案描述符,屬於使用者態,讀寫需進行使用者態與核心態切換。    fopen返回檔案指標 4、open是系統函式,不可移植    fopen是標準C函式,可移植 5、一般用fopen開啟普通檔案,open開啟裝置檔案 6、如果順序訪問檔案,fopen比open快    如果隨機訪問檔案,open比fopen快