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等配合使用。
後者是在前者的基礎上擴充而來的,在大多數情況下,用後者。