C语言中open与fopen的的解释和区别
生活随笔
收集整理的這篇文章主要介紹了
C语言中open与fopen的的解释和区别
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、open函數(shù)
- 函數(shù)原型:int open(const char *path, int access, int mode);
- 參數(shù)解釋:
- path:要打開的文件路徑和名稱。
- access:訪問模式,宏定義和含義如下:
– O_RDONLY(1):只讀打開;
– O_WRONLY(2):只寫打開;
– O_RDWR(4):讀寫打開;
還可選擇以下模式與以上3種基本模式相或:
– O_CREAT(0x0100)創(chuàng)建一個(gè)文件并打開;
– O_TRUNC(0x0200)打開一個(gè)已存在的文件并將文件長度設(shè)置為0,其他屬性保持;
– O_EXCL(0x0400)未使用;
– O_APPEND(0x0800)追加打開文件;
– O_TEXT(0x4000)打開文本文件翻譯CR-LF控制字符;
– O_BINARY(0x8000)打開二進(jìn)制字符,不作CR-LF翻譯; - mode:該參數(shù)僅在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):可執(zhí)行;
二、fopen函數(shù)
- 函數(shù)原型:FILE *fopen(char *filename, char *mode);
- 參數(shù)解釋:
– filename:文件名稱。
– mode:打開模式:- r:只讀方式打開一個(gè)文本文件(該文件必須存在);
- r+:可讀可寫方式打開一個(gè)文本文件(該文件必須存在);
- w:只寫方式打開一個(gè)文本文件(若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件);
- w+:可讀可寫方式創(chuàng)建一個(gè)文本文件(若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件);
- a:追加方式打開一個(gè)文本文件(若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。(EOF符保留));
- a+:可讀可寫追加方式打開一個(gè)文本文件(若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。 (原來的EOF符不保留));
- rb:只讀方式打開一個(gè)二進(jìn)制文件(使用法則同r);
- rb+:可讀可寫方式打開一個(gè)二進(jìn)制文件(使用法則同r+);
- wb:只寫方式打開一個(gè)二進(jìn)制文件(使用法則同w);
- wb+:可讀可寫方式生成一個(gè)二進(jìn)制文件(使用法則同w+);
- ab:追加方式打開一個(gè)二進(jìn)制文件(使用法則同a);
- ab+:可讀可寫方式追加一個(gè)二進(jìn)制文件(使用法則同a+);
- 返回參數(shù): 文件順利打開后,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,并把錯(cuò)誤代碼存在errno 中。一般而言,打開文件后會作一些文件讀取或?qū)懭氲膭幼?#xff0c;若打開文件失敗,接下來的讀寫動作也無法順利進(jìn)行,所以在fopen()后請作錯(cuò)誤判斷及處理。
三、兩者的區(qū)別
- 前者屬于低級IO,后者是高級IO。
- 前者返回一個(gè)文件描述符,后者返回一個(gè)文件指針。
- 前者無緩沖,后者有緩沖。
- 前者與 read, write 等配合使用, 后者與 fread, fwrite等配合使用。
- 后者是在前者的基礎(chǔ)上擴(kuò)充而來的,在大多數(shù)情況下,用后者。
總結(jié)
以上是生活随笔為你收集整理的C语言中open与fopen的的解释和区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ浏览器谷歌版吾爱破解(QQ浏览器最新
- 下一篇: C语言中如何使用宏连接多个字符串(#和#