Linux下open與fopen的區別 int open(const char *path, int access,int mode) path 要開啟的檔案路徑和名稱 www.2cto.com access 訪問模式,宏定義和含義如下: O_RDONLY 1 唯讀開啟 O_WRONLY 2 唯寫開啟 O_RDWR 4 讀寫開啟 還可選擇以下模式與以上3種基本模式相與: O_CREAT 0x0100 建立一個檔案並開啟 O_TRUNC 0x0200 開啟一個已存在的檔案並將檔案長度設定為0,其他屬性保持 O_EXCL 0x0400 未使用 O_APPEND 0x0800 追加開啟檔案 O_TEXT 0x4000 開啟文字檔翻譯CR-LF控制字元 O_BINARY 0x8000 開啟二進位字元,不作CR-LF翻譯 www.2cto.com mode 該參數僅在access=O_CREAT方式下使用,其取值如下: S_IFMT 0xF000 檔案類型掩碼 S_IFDIR 0x4000 目錄 S_IFIFO 0x1000 FIFO 專用 S_IFCHR 0x2000 字元專用 S_IFBLK 0x3000 塊專用 S_IFREG 0x8000 只為0x0000 S_IREAD 0x0100 可讀 S_IWRITE 0x0080 可寫 S_IEXEC 0x0040 可執行 FILE *fopen(char *filename, char *mode) filename 檔案名稱 mode 開啟模式: r 唯讀方式開啟一個文字檔 rb 唯讀方式開啟一個二進位檔案 w 唯寫方式開啟一個文字檔 wb 唯寫方式開啟一個二進位檔案 a 追加方式開啟一個文字檔 ab 追加方式開啟一個二進位檔案 r+ 可讀可寫方式開啟一個文字檔 rb+ 可讀可寫方式開啟一個二進位檔案 w+ 可讀可寫方式建立一個文字檔 wb+ 可讀可寫方式產生一個二進位檔案 a+ 可讀可寫追加方式開啟一個文字檔 ab+ 可讀可寫方式追加一個二進位檔案 www.2cto.com open和fopen的區別:前者屬於低級IO,後者是進階IO。前者返回一個檔案描述符,後者返回一個檔案指標。前者無緩衝,後者有緩衝。前者與 read, write 等配合使用, 後者與 fread, fwrite等配合使用。後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。